我有一个简单的 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 生成客户端 stub :
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 的类。
如何防止这种命名空间/名称冲突(或者是故意的)?
最佳答案
您可以做的最简单的事情就是在 javax.jws.WebService
注释中提供 targetNamespace
,类似的东西。
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
就是命运包。
关于java - Wsimport 生成的类和我的原始 Web 服务类中的名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405176/