Package org.apache.axis2.deployment
Class DeploymentEngine
- java.lang.Object
-
- org.apache.axis2.deployment.DeploymentEngine
-
- All Implemented Interfaces:
DeploymentConstants
- Direct Known Subclasses:
CustomAxisConfigurator
,FileSystemConfigurator
,ScriptDeploymentEngine
,URLBasedAxisConfigurator
,WarBasedAxisConfigurator
public abstract class DeploymentEngine extends Object implements DeploymentConstants
-
-
Field Summary
Fields Modifier and Type Field Description protected AxisConfiguration
axisConfig
to keep a ref to engine register this ref will pass to engine when it call start() methodprotected ConfigurationContext
configContext
static String
DEPLOYMENT_TASK_RUNNING
Indicates that the deployment task is runningprotected boolean
hotDeployment
Support for hot deployment is controlled by this flagprotected boolean
hotUpdate
Support for hot update is controlled by this flagprotected ModuleDeployer
moduleDeployer
protected File
modulesDir
protected String
modulesPath
protected RepositoryListener
repoListener
protected Scheduler
scheduler
protected ServiceDeployer
serviceDeployer
protected File
servicesDir
protected String
servicesPath
protected static String
webLocationString
protected List<DeploymentFileData>
wsToDeploy
Stores all the web Services to deploy.protected List<WSInfo>
wsToUnDeploy
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 Constructor Description DeploymentEngine()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDeployer(Deployer deployer, String directory, String extension)
Add and initialize a new Deployer.static void
addNewModule(AxisModule modulemetadata, AxisConfiguration axisConfiguration)
static void
addServiceGroup(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, DeploymentFileData currentDeploymentFile, AxisConfiguration axisConfiguration)
void
addWSToDeploy(DeploymentFileData file)
void
addWSToUndeploy(WSInfo file)
static AxisModule
buildModule(File modulearchive, AxisConfiguration config)
Builds an AxisModule for a given module archive file.static AxisService
buildService(InputStream serviceInputStream, ConfigurationContext configCtx)
Fills an axisservice object using services.xml.static AxisServiceGroup
buildServiceGroup(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 AxisConfigvoid
cleanup()
Clean up the messvoid
doDeploy()
void
engageModules()
Checks if the modules, referred by server.xml, exist or that they are deployed.protected static void
fillServiceGroup(AxisServiceGroup serviceGroup, ArrayList<AxisService> serviceList, URL serviceLocation, AxisConfiguration axisConfig)
AxisConfiguration
getAxisConfig()
Gets AxisConfiguration.static String
getAxisServiceName(String fileName)
Retrieves service name from the archive file name.Deployer
getDeployer(String directory, String extension)
Map<String,Map<String,Deployer>>
getDeployers()
protected ArrayList<String>
getFileList(URL fileListUrl)
AxisModule
getModule(String moduleName)
ModuleDeployer
getModuleDeployer()
File
getModulesDir()
RepositoryListener
getRepoListener()
File
getRepositoryDir()
protected String
getRepositoryPath(File repository)
ServiceDeployer
getServiceDeployer()
File
getServicesDir()
static String
getWebLocationString()
boolean
isDeploymentTaskRunning()
Method to check whether the deployment task is currently running.boolean
isHotUpdate()
protected static boolean
isServiceGroupReadyToDeploy(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.void
loadFromClassPath()
void
loadRepository(String repoDir)
void
loadRepositoryFromURL(URL repoURL)
static AxisServiceGroup
loadServiceGroup(File serviceFile, ConfigurationContext configCtx)
void
loadServices()
void
loadServicesFromUrl(URL repoURL)
AxisConfiguration
populateAxisConfiguration(InputStream in)
To get AxisConfiguration for a given inputStream this method can be used.protected void
prepareRepository(String repositoryName)
Creates directories for modules/services, copies configuration xml from class loader if necessaryvoid
removeDeployer(String directory, String extension)
Remove any Deployer mapped for the given directory and extensionprotected void
setClassLoaders(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 SCLvoid
setConfigContext(ConfigurationContext configContext)
void
setDeployers(Map<String,Map<String,Deployer>> deployerMap)
protected void
setDeploymentFeatures()
Sets hotDeployment and hot update.static void
setWebLocationString(String webLocationString)
protected void
startSearch(RepositoryListener listener)
Starts the Deployment engine to perform Hot deployment and so on.void
unDeploy()
-
-
-
Field Detail
-
DEPLOYMENT_TASK_RUNNING
public static final String DEPLOYMENT_TASK_RUNNING
Indicates that the deployment task is running- See Also:
- Constant Field Values
-
webLocationString
protected static String webLocationString
-
scheduler
protected Scheduler scheduler
-
hotUpdate
protected boolean hotUpdate
Support for hot update is controlled by this flag
-
hotDeployment
protected boolean hotDeployment
Support for hot deployment is controlled by this flag
-
wsToDeploy
protected List<DeploymentFileData> wsToDeploy
Stores all the web Services to deploy.
-
axisConfig
protected AxisConfiguration axisConfig
to keep a ref to engine register this ref will pass to engine when it call start() method
-
configContext
protected ConfigurationContext configContext
-
repoListener
protected RepositoryListener repoListener
-
servicesPath
protected String servicesPath
-
servicesDir
protected File servicesDir
-
modulesPath
protected String modulesPath
-
modulesDir
protected File modulesDir
-
serviceDeployer
protected ServiceDeployer serviceDeployer
-
moduleDeployer
protected ModuleDeployer moduleDeployer
-
-
Method Detail
-
setWebLocationString
public static void setWebLocationString(String webLocationString)
-
loadServices
public void loadServices()
-
loadRepository
public void loadRepository(String repoDir) throws DeploymentException
- Throws:
DeploymentException
-
loadFromClassPath
public void loadFromClassPath() throws DeploymentException
- Throws:
DeploymentException
-
loadServicesFromUrl
public void loadServicesFromUrl(URL repoURL)
-
loadRepositoryFromURL
public void loadRepositoryFromURL(URL repoURL) throws DeploymentException
- 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
public void addWSToDeploy(DeploymentFileData file)
- Parameters:
file
- ArchiveFileData
-
addWSToUndeploy
public void addWSToUndeploy(WSInfo file)
- Parameters:
file
- WSInfo
-
doDeploy
public void doDeploy()
-
engageModules
public void engageModules() throws AxisFault
Checks if the modules, referred by server.xml, exist or that they are deployed.- Throws:
AxisFault
- : If smt goes wrong
-
populateAxisConfiguration
public AxisConfiguration populateAxisConfiguration(InputStream in) throws DeploymentException
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
protected void startSearch(RepositoryListener listener)
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
public AxisConfiguration getAxisConfig()
Gets AxisConfiguration.- Returns:
- AxisConfiguration
AxisConfiguration
-
getAxisServiceName
public static String getAxisServiceName(String fileName)
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
public AxisModule getModule(String moduleName) throws AxisFault
- Throws:
AxisFault
-
isHotUpdate
public boolean isHotUpdate()
-
getWebLocationString
public static String getWebLocationString()
-
setClassLoaders
protected void setClassLoaders(String axis2repoURI) throws DeploymentException
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
protected void prepareRepository(String repositoryName)
Creates directories for modules/services, copies configuration xml from class loader if necessary- Parameters:
repositoryName
- the pathname of the repository
-
setConfigContext
public void setConfigContext(ConfigurationContext configContext)
-
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 AxisFault
To 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
public File getServicesDir()
-
getModulesDir
public File getModulesDir()
-
getRepositoryDir
public File getRepositoryDir()
-
getRepoListener
public RepositoryListener getRepoListener()
-
getServiceDeployer
public ServiceDeployer getServiceDeployer()
-
getModuleDeployer
public ModuleDeployer getModuleDeployer()
-
cleanup
public void cleanup()
Clean up the mess
-
addDeployer
public void addDeployer(Deployer deployer, String directory, String extension)
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
-
-