Столкновение имен в сгенерированном классе Wsimport и моем исходном классе веб-службы

У меня есть простой класс веб-службы, определенный следующим образом:

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

и все эти файлы имеют то же пространство имен, что и мой исходный класс веб-служб (com.me.basiccalcws).

Когда я импортирую эти файлы в свой проект Eclipse, происходит конфликт имен. Первоначально мое имя класса было "Калькулятор", но инструмент wsimport создал другой класс "Калькулятор" в том же пространстве имен.

Как предотвратить это столкновение пространства имен / имени (или это преднамеренно)?

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;
    }
}

Если вы не предоставите -p вариант в wsimport, этот targetNamespace это пакет судьбы.

Другие вопросы по тегам