001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019: package org.apache.axis2.deployment;
020:
021: import org.apache.axis2.AxisFault;
022: import org.apache.axis2.Constants;
023: import org.apache.axis2.util.Utils;
024: import org.apache.axis2.context.ConfigurationContext;
025: import org.apache.axis2.deployment.repository.util.ArchiveReader;
026: import org.apache.axis2.deployment.repository.util.DeploymentFileData;
027: import org.apache.axis2.description.AxisModule;
028: import org.apache.axis2.engine.AxisConfiguration;
029: import org.apache.axis2.i18n.Messages;
030: import org.apache.commons.logging.Log;
031: import org.apache.commons.logging.LogFactory;
032:
033: import java.io.PrintWriter;
034: import java.io.StringWriter;
035: import java.io.File;
036: import java.net.MalformedURLException;
037:
038: public class ModuleDeployer implements Deployer {
039:
040: private static final Log log = LogFactory
041: .getLog(ModuleDeployer.class);
042: private AxisConfiguration axisConfig;
043:
044: public ModuleDeployer() {
045: }
046:
047: public ModuleDeployer(AxisConfiguration axisConfig) {
048: this .axisConfig = axisConfig;
049: }
050:
051: //To initialize the deployer
052: public void init(ConfigurationContext configCtx) {
053: this .axisConfig = configCtx.getAxisConfiguration();
054: }
055:
056: //Will process the file and add that to axisConfig
057:
058: public void deploy(DeploymentFileData deploymentFileData) {
059: ArchiveReader archiveReader = new ArchiveReader();
060: String moduleStatus = "";
061: StringWriter errorWriter = new StringWriter();
062: boolean isDirectory = deploymentFileData.getFile()
063: .isDirectory();
064: try {
065: deploymentFileData
066: .setClassLoader(
067: isDirectory,
068: axisConfig.getModuleClassLoader(),
069: (File) axisConfig
070: .getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR));
071: AxisModule metaData = new AxisModule();
072: metaData.setModuleClassLoader(deploymentFileData
073: .getClassLoader());
074: metaData.setParent(axisConfig);
075: archiveReader.readModuleArchive(deploymentFileData,
076: metaData, isDirectory, axisConfig);
077: metaData.setFileName(deploymentFileData.getFile().toURL());
078: DeploymentEngine.addNewModule(metaData, axisConfig);
079: log.info(Messages.getMessage(
080: DeploymentErrorMsgs.DEPLOYING_MODULE, Utils
081: .getModuleName(metaData.getName(), metaData
082: .getVersion())));
083: } catch (DeploymentException e) {
084: log.error(Messages.getMessage(
085: DeploymentErrorMsgs.INVALID_MODULE,
086: deploymentFileData.getName(), e.getMessage()), e);
087: PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
088: e.printStackTrace(error_ptintWriter);
089: moduleStatus = "Error:\n" + errorWriter.toString();
090: } catch (AxisFault axisFault) {
091: log.error(Messages.getMessage(
092: DeploymentErrorMsgs.INVALID_MODULE,
093: deploymentFileData.getName(), axisFault
094: .getMessage()), axisFault);
095: PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
096: axisFault.printStackTrace(error_ptintWriter);
097: moduleStatus = "Error:\n" + errorWriter.toString();
098: } catch (MalformedURLException e) {
099: log.error(Messages.getMessage(
100: DeploymentErrorMsgs.INVALID_MODULE,
101: deploymentFileData.getName(), e.getMessage()), e);
102: PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
103: e.printStackTrace(error_ptintWriter);
104: moduleStatus = "Error:\n" + errorWriter.toString();
105: } catch (Throwable t) {
106: if (log.isInfoEnabled()) {
107: StringWriter sw = new StringWriter();
108: PrintWriter pw = new PrintWriter(sw);
109: t.printStackTrace(pw);
110: log.error(Messages.getMessage(
111: DeploymentErrorMsgs.INVALID_MODULE,
112: deploymentFileData.getName(), t.getMessage()),
113: t);
114: }
115: PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
116: t.printStackTrace(error_ptintWriter);
117: moduleStatus = "Error:\n" + errorWriter.toString();
118: } finally {
119: if (moduleStatus.startsWith("Error:")) {
120: axisConfig.getFaultyModules().put(
121: DeploymentEngine
122: .getAxisServiceName(deploymentFileData
123: .getName()), moduleStatus);
124: }
125: }
126: }
127:
128: public void setDirectory(String directory) {
129: }
130:
131: public void setExtension(String extension) {
132: }
133:
134: public void unDeploy(String fileName) {
135: }
136: }
|