Define the custom namespace to package mapping of generated file from wsdl - Axis2 eclipse

Bracha picture Bracha · Feb 3, 2011 · Viewed 13.5k times · Source

I have wsdl file in Eclipse and I am generating the client via axis2 plugin.

The files are being generated to a package called com.mycompany.stub in source folder.

I would like to change the package names of the generated source files to com.mycompany.ws.workflow

Where can I do it in the wsdl file?

Answer

TMan picture TMan · Feb 3, 2011

You don't really have to modify wsdl to achieve this. If you are using Eclipse Helios Web service Client Wizard, On the second step (optional) where you specify output folder for generated source, there's a checkbox for 'Define custom mapping for namespace to package.'. Select that box and on the next form you can define your custom package mappings.

EDIT 1:

Link to the Official Documentation

EDIT 2:

WSDL

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://mycompany.com/MyService.wsdl"
xmlns:scm="http://mycompany.com/MyService.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://mycompany.com/MyService.wsdl">
...

For simple wsdl as shown above, custom mapping would look like as below.

http://mycompany.com/MyService.wsdl - com.mycompany.ws.workflow http://mycompany.com/MyService.xsd - com.mycompany.ws.workflow.schema

You can click Add and enter name-space and package names or you can store mapping in properties file and click import to add it all at once. I prefer properties file. Also you have to escape the name space URL and other special characters if you are going to use properties file. Your properties file should look similar to below.

nsmapping.properties

http\://mycompany.com/MyService.wsdl=com.mycompany.ws.workflow http\://mycompany.com/MyService.xsd=com.mycompany.ws.workflow.schema

Excerpt from official documentation.

The content of the properties file must be of the format namespace=package. You will need to escape some special characters in the properties files. For example http://someNamespace=somePackage should be http://someNamespace=somePackage. Otherwise, the colon (:) would be treated as delimiter resulting in trying to map http to //someNamespace=somePackage.