Wsimport生成的类和我的原始Web服务类中的名称冲突

时间:2013-01-18 18:21:30

标签: java web-services class duplicates wsimport

我有一个简单的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的类。

如何防止此命名空间/名称冲突(或者是故意的)?

1 个答案:

答案 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是命运包。