Столкновение имен в сгенерированном классе 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
это пакет судьбы.