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

标签 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 生成客户端 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/

相关文章:

java - "Standardized"处理 Java EE 应用程序生命周期的方式

java - Spring和Soap客户端,使用池化吗?

c++ - 基类中的模板化类成员,不存在于派生类中

C++ 重载运算符 << 让我做噩梦

java - 使用来自不同类的参数访问方法

java.lang.IllegalArgumentException : Log tag "okhttp3.mockwebserver.MockWebServer" exceeds limit of 23 characters

java - 如何使用 long 而不是 int 可以防止以下方法 - Effective Java

java - 编译我的代码时找不到符号

java - 如何遍历二叉树

c# - ServiceStack服务请求设计