Как я могу настроить целевое пространство имен глобально в веб-сервисах JAX-WS?
У меня много конечных точек, помеченных @WebService(targetNamespace = "mynamespace")
, каждый @WebResult
а также @WebParam
имеет такое же определение targetNamespace = "mynamespace"
,
Есть ли способ настроить JAX-WS (реализация Metro) для использования "mynamespace"
как targetNamespace по умолчанию?
Я хотел бы использовать аннотации без каких-либо атрибутов и избавиться от дублированных объявлений, как соглашение по конфигурации.
1 ответ
Только положить targetNamespace
в интерфейсе конечной точки службы или компоненте реализации службы.
/**
* Annotated Implementation Object
*/
@WebService(
name = "CustomerService",
targetNamespace = "http://org.company.services"
)
public class CustomerService {
@WebMethod
@WebResult(name="CustomerRecord")
public CustomerRecord locateCustomer(
@WebParam(name="FirstName") String firstName,
@WebParam(name="LastName") String lastName,
@WebParam(name="Address") USAddress addr) {
...
}
};
Если @WebResult
или же @WebParam
не иметь targetNamespace
по умолчанию используется targetNamespace
для веб-службы.
С другой стороны, вы можете избежать всех аннотаций и использовать только @WebService
если вам не нужно что-то нестандартное с JAX-B.
Подробнее см. В разделе Метаданные веб-служб JSR-181 для платформы JavaTM.