Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Writing Axis2 Custom Deployers - hot deployment - WSO2 Carbon Products

DZone's Guide to

Writing Axis2 Custom Deployers - hot deployment - WSO2 Carbon Products

Free Resource

Today’s data climate is fast-paced and it’s not slowing down. Here’s why your current integration solution is not enough. Brought to you in partnership with Liaison Technologies.

Custom deployers is a concept introduced to Axis2 to increase it's flexibility and enhance the dynamic nature.  With this article on Axis2 Custom Deployers, it's originator himself explains it's background and procedure in details. With this post, I'll just share the steps I followed in using this feature.
  • Following is the basic structure of a custom deployer. There needs to be a class that has implemented 'org.apache.axis2.deployment.Deployer' interface and a component.xml file that carries some required properties for the deployer.
  • Following is the basic structure of a CustomDeployer class.
public class CustomDeployer extends AbstractDeployer {

    private static Log log = LogFactory.getLog(CustomDeployer.class);
    private File userMgtConfigFile;
    private RealmConfigXMLProcessor realmConfigXMLProcessor = new RealmConfigXMLProcessor();

    public void init(ConfigurationContext configurationContext) {
        // Here goes all the initialization code.
    }

    public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
        File file = deploymentFileData.getFile();
        // Here goes the processing code need to process the file
    }

    public void setDirectory(String s) {
        // if we need to know the subdirectory that the deployer has registered
    }

    public void setExtension(String s) {
        //extension of the file that the deployer has registered
    }
}
When there is a file addition in the subdirectory that we are interested in (file extension that the deployer has registered with) 'deploy' method is called. When a file is deleted 'undeploy' method is called. When a modification is done both the methods will be called accordingly. Directory and extension of the files to be deployed can be set by the relevant methods.
  • Following is a sample component.xml file written for a WSO2 Carbon product.
<component xmlns="http://products.wso2.org/carbon">
    <deployers>
        <deployer>
            <directory>userstore</directory>
            <extension>xml</extension>
            <class>org.wso2.carbon.identity.user.store.configuration.deployer.UserStoreConfigurationDeployer</class>
        </deployer>
    </deployers>
</component>
  • Finally in the pom.xml(of Maven module) we should define the deployer as follows,
<Axis2Deployer>CustomDeployer</Axis2Deployer> 

We are done now. Finally one more thing worth to note is, we can enable hot update by setting 'true' for the parameter 'hotupdate' in axis2.xml. With this if we add a file of the given extension in the directory, the file will be get deployed at the moment itself.












Is iPaaS solving the right problems? Not knowing the fundamental difference between iPaaS and iPaaS+ could cost you down the road. Brought to you in partnership with Liaison Technologies.

Topics:

Published at DZone with permission of Pushpalanka Jayawardhana, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}