Package org.apache.axis2.deployment
Class DeploymentEngine
java.lang.Object
org.apache.axis2.deployment.DeploymentEngine
- All Implemented Interfaces:
DeploymentConstants
- Direct Known Subclasses:
FileSystemConfigurator,URLBasedAxisConfigurator,WarBasedAxisConfigurator
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected AxisConfigurationto keep a ref to engine register this ref will pass to engine when it call start() methodprotected ConfigurationContextstatic final StringIndicates that the deployment task is runningprotected booleanSupport for hot deployment is controlled by this flagprotected booleanSupport for hot update is controlled by this flagprotected ModuleDeployerprotected Fileprotected Stringprotected RepositoryListenerprotected Schedulerprotected ServiceDeployerprotected Fileprotected Stringprotected static Stringprotected List<DeploymentFileData>Stores all the web Services to deploy.Stores all the web Services to undeploy.Fields inherited from interface org.apache.axis2.deployment.DeploymentConstants
ATTACHMENTS_LIFECYCLE_MANAGER, ATTRIBUTE_ACTIVATE, ATTRIBUTE_CLASS, ATTRIBUTE_DEFAULT_VERSION, ATTRIBUTE_LOCKED, ATTRIBUTE_NAME, ATTRIBUTE_NAMESPACE, ATTRIBUTE_PACKAGE, ATTRIBUTE_SCOPE, ATTRIBUTE_WSADDRESSING, AXIS2_CONFIGURATION_RESOURCE, AXIS2_CONFIGURATION_XML, AXIS2_REPO, BOOLEAN_FALSE, BOOLEAN_TRUE, DEPLOYER, DIRECTORY, DIRECTORY_AXIS2_HOME, DIRECTORY_CONF, EXTENSION, MAPPING, META_INF, MODULE_DRI_PATH, MODULE_PATH, MODULE_XML, PROPERTY_TEMP_DIR, RESOURCE_MODULES, SCHEMA, SCHEMA_ELEMENT_QUALIFIED, SCHEMA_NAME_SPACE, SEPARATOR_COLON, SEPARATOR_DOT, SERVICE_DIR_PATH, SERVICE_PATH, SERVICES_XML, SUFFIX_JAR, SUFFIX_MAR, SUFFIX_WSDL, TAG_AFTER, TAG_ALLOWOVERRIDE, TAG_ANTI_JAR_LOCKING, TAG_APPLIES_TO, TAG_AXISCONFIG, TAG_BEFORE, TAG_CLASS_NAME, TAG_CLUSTER, TAG_CONTENT_TYPE, TAG_CONTEXT, TAG_DEFAULT_MODULE_VERSION, TAG_DEFAULTS, TAG_DESCRIPTION, TAG_DESCRIPTION_ALT, TAG_DISPATCH_ORDER, TAG_DISPATCHER, TAG_EXCLUDE, TAG_EXCLUDE_OPERATIONS, TAG_EXCLUDE_PROPERTIES, TAG_EXPOSE, TAG_EXTRACT_SERVICE_ARCHIVE, TAG_FLOW_IN, TAG_FLOW_IN_FAULT, TAG_FLOW_OUT, TAG_FLOW_OUT_FAULT, TAG_HANDLER, TAG_HOT_DEPLOYMENT, TAG_HOT_UPDATE, TAG_INCLUDE_PROPERTIES, TAG_LABEL, TAG_LIST_ID, TAG_LISTENER, TAG_MAPPING, TAG_MEP, TAG_MESSAGE, TAG_MESSAGE_BUILDER, TAG_MESSAGE_BUILDERS, TAG_MESSAGE_FORMATTER, TAG_MESSAGE_FORMATTERS, TAG_MESSAGE_RECEIVER, TAG_MESSAGE_RECEIVERS, TAG_MODULE, TAG_MODULE_CONFIG, TAG_NAMESPACES, TAG_NODE_MANAGER, TAG_OBJECT_SUPPLIER, TAG_OPERATION, TAG_ORDER, TAG_PACKAGE_NAME, TAG_PACKAGE2QNAME, TAG_PARAMETER, TAG_PHASE, TAG_PHASE_FIRST, TAG_PHASE_LAST, TAG_PHASE_ORDER, TAG_POLICY_ATTACHMENT, TAG_QNAME, TAG_REFERENCE, TAG_REPLICATION, TAG_SERVICE, TAG_SERVICE_BUILDER_EXTENSION, TAG_SERVICE_GROUP, TAG_STATE_MANAGER, TAG_SUPPORTED_POLICY_NAMESPACES, TAG_TARGET_RESOLVER, TAG_TARGET_RESOLVERS, TAG_THREAD_CONTEXT_MIGRATOR, TAG_THREAD_CONTEXT_MIGRATORS, TAG_TIMEOUT, TAG_TRANSACTION, TAG_TRANSACTION_CONFIGURATION_CLASS, TAG_TRANSPORT, TAG_TRANSPORT_RECEIVER, TAG_TRANSPORT_SENDER, TAG_TRANSPORTS, TAG_TYPE, TARGET_NAME_SPACE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddDeployer(Deployer deployer, String directory, String extension) Add and initialize a new Deployer.static voidaddNewModule(AxisModule modulemetadata, AxisConfiguration axisConfiguration) static voidaddServiceGroup(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, DeploymentFileData currentDeploymentFile, AxisConfiguration axisConfiguration) voidvoidaddWSToUndeploy(WSInfo file) static AxisModulebuildModule(File modulearchive, AxisConfiguration config) Builds an AxisModule for a given module archive file.static AxisServicebuildService(InputStream serviceInputStream, ConfigurationContext configCtx) Fills an axisservice object using services.xml.static AxisServiceGroupbuildServiceGroup(InputStream servicesxml, ClassLoader classLoader, String serviceGroupName, ConfigurationContext configCtx, ArchiveReader archiveReader, HashMap<String, AxisService> wsdlServices) To build a AxisServiceGroup for a given services.xml You have to add the created group into AxisConfigvoidcleanup()Clean up the messvoiddoDeploy()voidChecks if the modules, referred by server.xml, exist or that they are deployed.protected static voidfillServiceGroup(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, AxisConfiguration axisConfig) Gets AxisConfiguration.static StringgetAxisServiceName(String fileName) Retrieves service name from the archive file name.getDeployer(String directory, String extension) getFileList(URL fileListUrl) protected StringgetRepositoryPath(File repository) static StringbooleanMethod to check whether the deployment task is currently running.booleanprotected static booleanisServiceGroupReadyToDeploy(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, DeploymentFileData currentDeploymentFile, AxisConfiguration axisConfig) Performs a check routine, in order to identify whether all the serviceGroup, service and operation level modules are available.voidvoidloadRepository(String repoDir) voidloadRepositoryFromURL(URL repoURL) static AxisServiceGrouploadServiceGroup(File serviceFile, ConfigurationContext configCtx) voidvoidloadServicesFromUrl(URL repoURL) To get AxisConfiguration for a given inputStream this method can be used.protected voidprepareRepository(String repositoryName) Creates directories for modules/services, copies configuration xml from class loader if necessaryvoidremoveDeployer(String directory, String extension) Remove any Deployer mapped for the given directory and extensionprotected voidsetClassLoaders(String axis2repoURI) To set the all the classLoader hierarchy this method can be used , the top most parent is CCL then SCL(system Class Loader) CCL : SCL : : MCCL SCCL : : MCL SCLvoidsetConfigContext(ConfigurationContext configContext) voidprotected voidSets hotDeployment and hot update.static voidsetWebLocationString(String webLocationString) protected voidstartSearch(RepositoryListener listener) Starts the Deployment engine to perform Hot deployment and so on.voidunDeploy()
-
Field Details
-
DEPLOYMENT_TASK_RUNNING
Indicates that the deployment task is running- See Also:
-
webLocationString
-
scheduler
-
hotUpdate
protected boolean hotUpdateSupport for hot update is controlled by this flag -
hotDeployment
protected boolean hotDeploymentSupport for hot deployment is controlled by this flag -
wsToDeploy
Stores all the web Services to deploy. -
wsToUnDeploy
Stores all the web Services to undeploy. -
axisConfig
to keep a ref to engine register this ref will pass to engine when it call start() method -
configContext
-
repoListener
-
servicesPath
-
servicesDir
-
modulesPath
-
modulesDir
-
serviceDeployer
-
moduleDeployer
-
-
Constructor Details
-
DeploymentEngine
public DeploymentEngine()
-
-
Method Details
-
setWebLocationString
-
loadServices
public void loadServices() -
loadRepository
- Throws:
DeploymentException
-
loadFromClassPath
- Throws:
DeploymentException
-
loadServicesFromUrl
-
loadRepositoryFromURL
- Throws:
DeploymentException
-
addNewModule
public static void addNewModule(AxisModule modulemetadata, AxisConfiguration axisConfiguration) throws AxisFault - Throws:
AxisFault
-
addServiceGroup
public static void addServiceGroup(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, DeploymentFileData currentDeploymentFile, AxisConfiguration axisConfiguration) throws AxisFault - Throws:
AxisFault
-
isServiceGroupReadyToDeploy
protected static boolean isServiceGroupReadyToDeploy(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, DeploymentFileData currentDeploymentFile, AxisConfiguration axisConfig) throws AxisFault Performs a check routine, in order to identify whether all the serviceGroup, service and operation level modules are available. If a referenced module is not deployed yet, the serviceGroup is added as a faulty service.- Parameters:
serviceGroup- the AxisServiceGroup we're checkingserviceList- a List of AxisServices to checkserviceLocation- the URL of the service (only used if there's a problem)currentDeploymentFile- the current DeploymentFileData object (only used if there's a problem)axisConfig- the active AxisConfiguration- Returns:
- boolean
- Throws:
AxisFault
-
fillServiceGroup
protected static void fillServiceGroup(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, AxisConfiguration axisConfig) throws AxisFault - Throws:
AxisFault
-
addWSToDeploy
- Parameters:
file- ArchiveFileData
-
addWSToUndeploy
- Parameters:
file- WSInfo
-
doDeploy
public void doDeploy() -
engageModules
Checks if the modules, referred by server.xml, exist or that they are deployed.- Throws:
AxisFault- : If smt goes wrong
-
populateAxisConfiguration
To get AxisConfiguration for a given inputStream this method can be used. The inputstream should be a valid axis2.xml , else you will be getting DeploymentExceptions. First creat a AxisConfiguration using given inputSream , and then it will try to find the repository location parameter from AxisConfiguration, so if user has add a parameter with the name "repository" , then the value specified by that parameter will be the repository and system will try to load modules and services from that repository location if it a valid location. hot deployment and hot update will work as usual in this case. You will be getting AxisConfiguration corresponding to given inputstream if it is valid , if something goes wrong you will be getting DeploymentException- Parameters:
in- : InputStream to axis2.xml- Returns:
- a populated AxisConfiguration
- Throws:
DeploymentException- : If something goes wrong
-
startSearch
Starts the Deployment engine to perform Hot deployment and so on.- Parameters:
listener- : RepositoryListener
-
isDeploymentTaskRunning
public boolean isDeploymentTaskRunning()Method to check whether the deployment task is currently running. Will be used is graceful shutdown & restart scenarios.- Returns:
- true - if the deployment task is running, false - otherwise
-
unDeploy
public void unDeploy() -
getAxisConfig
Gets AxisConfiguration.- Returns:
- AxisConfiguration
AxisConfiguration
-
getAxisServiceName
Retrieves service name from the archive file name. If the archive file name is service1.aar , then axis2 service name would be service1- Parameters:
fileName- the archive file name- Returns:
- Returns String.
-
getModule
- Throws:
AxisFault
-
isHotUpdate
public boolean isHotUpdate() -
getWebLocationString
-
setClassLoaders
To set the all the classLoader hierarchy this method can be used , the top most parent is CCL then SCL(system Class Loader) CCL : SCL : : MCCL SCCL : : MCL SCL MCCL : module common class loader SCCL : Service common class loader MCL : module class loader SCL : Service class loader- Parameters:
axis2repoURI- : The repository folder of Axis2- Throws:
DeploymentException- if there's a problem
-
setDeploymentFeatures
protected void setDeploymentFeatures()Sets hotDeployment and hot update. -
prepareRepository
Creates directories for modules/services, copies configuration xml from class loader if necessary- Parameters:
repositoryName- the pathname of the repository
-
getRepositoryPath
-
getFileList
-
setConfigContext
-
buildModule
public static AxisModule buildModule(File modulearchive, AxisConfiguration config) throws DeploymentException Builds an AxisModule for a given module archive file. This does not called the init method since there is no reference to configuration context so who ever create module using this has to called module.init if it is required- Parameters:
modulearchive- : Actual module archive fileconfig- : AxisConfiguration : for get classloaders etc..- Returns:
- a complete AxisModule read from the file.
- Throws:
DeploymentException- if there's a problem
-
buildService
public static AxisService buildService(InputStream serviceInputStream, ConfigurationContext configCtx) throws DeploymentException Fills an axisservice object using services.xml. First creates an axisservice object using WSDL and then fills it using the given services.xml. Loads all the required class and builds the chains, finally adds the servicecontext to EngineContext and axisservice into EngineConfiguration.- Parameters:
serviceInputStream- InputStream containing configuration dataconfigCtx- the ConfigurationContext in which we're deploying- Returns:
- Returns AxisService.
- Throws:
DeploymentException- if there's a problem
-
buildServiceGroup
public static AxisServiceGroup buildServiceGroup(InputStream servicesxml, ClassLoader classLoader, String serviceGroupName, ConfigurationContext configCtx, ArchiveReader archiveReader, HashMap<String, AxisService> wsdlServices) throws AxisFaultTo build a AxisServiceGroup for a given services.xml You have to add the created group into AxisConfig- Parameters:
servicesxml- InputStream created from services.xml or equivalentclassLoader- ClassLoader to useserviceGroupName- name of the service groupconfigCtx- the ConfigurationContext in which we're deployingarchiveReader- the ArchiveReader we're working withwsdlServices- Map of existing WSDL services- Returns:
- a fleshed-out AxisServiceGroup
- Throws:
AxisFault- if there's a problem
-
loadServiceGroup
public static AxisServiceGroup loadServiceGroup(File serviceFile, ConfigurationContext configCtx) throws AxisFault - Throws:
AxisFault
-
getServicesDir
-
getModulesDir
-
getRepositoryDir
-
setDeployers
-
getDeployers
-
getRepoListener
-
getServiceDeployer
-
getModuleDeployer
-
getDeployer
-
cleanup
public void cleanup()Clean up the mess -
addDeployer
Add and initialize a new Deployer.- Parameters:
deployer- Deployer object to be registereddirectory- the directory which will be scanned for deployable artifactsextension- the extension of the deployable artifacts for this Deployer
-
removeDeployer
Remove any Deployer mapped for the given directory and extension- Parameters:
directory- the directory of deployablesextension- the extension of deployables
-