我有一个简单的Web服务类,定义如下:
package com.me.basiccalcws;
import javax.jws.WebService;
@WebService
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
我使用 wsgen 工具生成 wsdl :
wsgen -classpath ..\bin -wsdl -s src -r wsdl -d bin com.me.basiccalcws.Calculator
然后我使用 wsimport 生成客户端存根:
wsimport -s src ..\_wsgen\wsdl\CalculatorService.wsdl
运行 wsimport 后生成的文件如下:
Add.java
AddResponse.java
Calculator.java
CalculatorService.java
ObjectFactory.java
package-info.java
并且所有这些文件都与我的原始Web服务类(com.me.basiccalcws)具有相同的命名空间。
当我将这些文件导入Eclipse项目时,会发生名称冲突。我的原始类名是Calculator,而 wsimport 工具在同一名称空间中创建了另一个名为Calculator的类。
如何防止此命名空间/名称冲突(或者是故意的)?
答案 0 :(得分:1)
您可以做的最简单的事情就是在targetNamespace
注释中提供javax.jws.WebService
,就像这样。
package com.me.basiccalcws;
import javax.jws.WebService;
@WebService(targetNamespace = "http://client.basiccalcws.me.com/")
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
如果您未在wsimport
中提供-p
选项,则此targetNamespace
是命运包。