отключить проверку мыла в мыльном клиенте, используя стандартную реализацию jaxws-ri jdk 8 - PullRequest
1 голос
/ 15 марта 2019

Моя среда - это проект maven с весенней загрузкой.Я использую wsimport для генерации кода JAX-WS из WSDL.я хочу отключить проверку мыла при получении ответа на мыло.Я использую стандартную реализацию jax-WS jdk8.код выглядит следующим образом:

// (1) Теперь создайте клиент веб-сервиса

MyWS_Service service = new MyWS_Service(null, new QName("http://...", "MyWS"));
MyWS port = service.getMyWSSOAP();

BindingProvider bindingProvider = (BindingProvider) port;

// (2) отключите проверку

       bindingProvider.getRequestContext().put("set-jaxb-validation-event-handler", "false");
// set endpoint
    bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http//...endpointaddress");

// (3) выполнить запрос

respObj = port.myRequest(myRequestObj);

Я искал в Google и нашел способ отключить проверку:

(3) bindingProvider.getRequestContext (). Put ("set-jaxb-validation-event-handler ", sc.getSocketFactory ());

но мне кажется, что эта опция не принята реализацией jax-WS jdk8 по умолчанию, однако она принята apache cxf.Итак, как я могу отключить проверку в реализации по умолчанию jax-ws jdk8?Есть ли способ загрузить реализацию cxf в моем проекте, поэтому я использую предыдущий параметр, чтобы отключить проверку?Есть ли способ настроить проверку XML?

1 Ответ

0 голосов
/ 20 марта 2019

Я не нашел решения для отключения проверки jaxb xml, но я нашел способ интегрировать apache cxf в мой проект, решение было простым, я просто добавил это в свой проект

    <!--apache cxf implementation -->
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${apache.cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${apache.cxf.version}</version>
    </dependency>

И я заставляю провайдера привязки отключить проверку

bindingProvider.getRequestContext().put("set-jaxb-validation-event-handler", "false");

, на самом деле класс jdk javax.xml.ws.spi.FactoryFinder#find будет искать в CLASSPATH наличие файла javax.xml.ws.spi.Provider и возвращается к реализации Sun по умолчанию, если она недоступна.,

Я вдохновился этой ссылкой: force jax-ws реализация Apache CXF

Итак, это все шаги:

  1. создать заглушку с помощью wsimport

  2. добавить cxf-rt-frontend-jaxws - *. jar в путь к классам (добавив артефакт cxf-rt-frontend-jaxws с помощью mvn) для принудительной реализации apache cxf

  3. отключить проверку bindingProvider.getRequestContext (). Put ("set-jaxb-validation-event-handler", "false");

...