Known limitations of the deployment
The process of deploying custom components has a series of limitations that you need to be aware of before you try to deploy your own components.
WSComponentManager not available
Unlike with all other SDK components, when deploying web service custom components, you do not use the SDK WSComponentManager; you do not upload web service custom components through , as you do with other components. Instead, you must copy your custom component .jar files to the application server machine (WEB-INF/lib) in your WorldServer application directory.
org.apache.axis.client.AdminClient tool manually, passing the target WorldServer web service URL and the web service deployment descriptor as parameters. For example:
toolkit> java org.apache.axis.client.AdminClient -l
http://<ws-host>:<ws-port>/ws-legacy/services deploy.wsdd
- In a cluster environment, you must deploy your custom web service server .jar files on every node in the cluster. You might also need to restart each node.
- When you reinstall or upgrade WorldServer, you must preserve and restore all custom web service .jar files. Otherwise, they could get lost in transition. In addition, you should deploy the new versions of any sample components that you had previously installed.
Axis clients not compatible with dynamic reloading
Axis clients do not work properly in WorldServer if the web service client classes are reloaded dynamically as part of other WorldServer components, such as automatic actions.
When uploading web service client classes as part of the .zip file of another component, multiple inconsistent versions of classes may result. The may be due to Axis class caches not being refreshed when classes are dynamically reloaded. When the WorldServer component class loader reloads a class during the execution of an automatic action after any upload operation, some parts of Axis serializers may still refer to obsolete versions of the class and its methods. This, in turn, leads to multiple inconsistent versions of the classes cached in memory, which causes class-cast exceptions, or messages such as java.lang.IllegalArgumentException: object is not an instance of declaring class.
To avoid such a situation, package your Axis client classes in a separate .jar file and deploy them manually on each application server by copying them to WEB-INF/lib. Avoid uploading them as part of component .zip files. Split the component-dependent Axis web client classes so that the system class-loader loads them only once, instead of them being re-uploaded every time by the WorldServer component class loader.