【问题标题】:Name Collision In Wsimport Generated Class And My Original Web Service ClassWsimport 生成的类和我的原始 Web 服务类中的名称冲突
【发布时间】:2013-01-18 18:21:30
【问题描述】:

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

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

【问题讨论】:

    标签: java web-services class duplicates wsimport


    【解决方案1】:

    您可以做的最简单的事情是在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 是命运包。

    【讨论】:

      猜你喜欢
      • 2020-06-07
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 2017-08-27
      • 1970-01-01
      相关资源
      最近更新 更多