The WSO2 SOA Platform has the built-in capability to host legacy Axis1
services with Axis2. This simplifies migrating the Axis1 services to the
power and flexibility of Axis2. You do not need to change any of your
existing source code to achieve this. You can simply upload your Axis1
services using this tool, and it will be deployed as an Axis2 service.
Uploading the Axis1 Service
To use your Axis1 service with Axis2, you need to have all the service and
data classes referenced by your WSDD file (server-config.wsdd) available to
the Axis1 service deployer. To do this, you must upload the appropriate
classes packaged as a .jar file, along with the WSDD file for the service.
Figure 1: Uploading Axis1 Service
In the navigator, under Manage/Service, click Axis1 Service. The New Axis1 Service page appears.
In the Descriptor field, click Browse
and select the WSDD file path.
In the Resources field, click Browse
and select the paths for the resource .jar files.
Click the plus sign (+) if you want to add multiple .jar files.
Click Upload.
Once your WSDD file is deployed, all the Axis1 services inside it will
automatically be available as Axis2 services, all in a single Service Group.
Note: In addition to uploading Axis1 services using this
user interface, you can also manually place the .jar files containing your
classes into CARBON_HOME/repository/services/axis1services/lib. They will
then be accessible to the Axis2 engine to be deployed as services.
Axis1 RPC Services
When you look at the Axis1 services that you deployed using this
tool, you will notice that some of those services have
only one operation named invokeAxis1Service on the Service Dashboard. You might have expected to see
the set of original operations that you had in your Axis1 service. The reason
for this is because that those Axis1 services are RPC/encoded style services,
and Axis2 does not natively support RPC/encoded services.
The single operation named invokeAxis1Service that you see is a proxy
pass-through operation, which hands all incoming messages to your
Axis1 service. Your service will function perfectly normally, and you will be
able to invoke all the operations that were present in the original Axis1
service.
Note: You will not be able to engage Axis2 modules on per-operation basis
for these types of services. You will only be able to engage modules at
global and service levels.