定义自定义命名空间以封装来自wsdl - Axis2 eclipse的生成文件的映射

时间:2011-02-03 09:58:22

标签: java eclipse axis2 webservice-client

我在Eclipse中有wsdl文件,我通过axis2插件生成客户端。

正在为源文件夹中名为com.mycompany.stub的包生成文件。

我想将生成的源文件的包名更改为com.mycompany.ws.workflow

我在哪里可以在wsdl文件中执行此操作?

1 个答案:

答案 0 :(得分:9)

您实际上不必修改wsdl来实现此目的。如果您正在使用Eclipse Helios Web服务客户端向导,则在为生成的源指定输出文件夹的第二步(可选)中,有一个“定义命名空间到包的自定义映射”的复选框。选择该框,然后在下一个表单上定义自定义包映射。

编辑1:

链接到Official Documentation

编辑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">
...

对于如上所示的简单wsdl,自定义映射如下所示。

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

您可以单击“添加”并输入名称空间和包名称,也可以在属性文件中存储映射,然后单击“导入”以一次性添加全部。我更喜欢属性文件。如果要使用属性文件,还必须转义名称空间URL和其他特殊字符。您的属性文件应类似于下面的内容。

nsmapping.properties

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

摘自官方文件。

  

属性文件的内容必须是namespace = package格式。您需要转义属性文件中的一些特殊字符。例如,http://someNamespace=somePackage应为http:// someNamespace = somePackage。否则,冒号(:)将被视为分隔符,导致尝试将http映射到// someNamespace = somePackage。