Как я могу настроить целевое пространство имен глобально в веб-сервисах 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.

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