Невозможно создать экземпляр SOAP-клиента — сбой с NullPointerException

#java #soap #jax-ws #javax.xml

#java #soap #jax-ws #javax.xml

Вопрос:

При создании экземпляра SOAP-клиента я получаю исключение NullPointerException

 @WebServiceClient(name = "QWEServiceManager", targetNamespace = "http://external.ws.services.abc.com/", wsdlLocation = "file:/C:/Users/XYZ/Desktop/77777/QWEServiceManagerService.wsdl")
public class QWEServiceManagerService extends Service
  

Когда я пытаюсь создать экземпляр клиента для вызова службы SOAP

 QWEServiceManagerService serv = new QWEServiceManagerService()
  

приведенное выше выдает

 Exception in thread "main" javax.xml.ws.WebServiceException: Unable to createEndpointReference Provider
    at javax.xml.ws.spi.Provider.provider(Provider.java:160)
    at javax.xml.ws.Service.<init>(Service.java:92)
    at QWEServiceManagerService.<init>(QWEServiceManagerService .java:48)
    at WsClient.main(WsClient.java:26)
Caused by: java.lang.NullPointerException
    at javax.xml.ws.spi.Provider.provider(Provider.java:152)
    ... 3 more
  

Ответ №1:

Проблема заключалась в том, что Java перестала предоставлять реализацию поставщика по умолчанию выше Java 6 .

Он пытается найти Impl с помощью следующих шагов:

  • Сначала загрузчиком службы
  • Из свойств JDK (из $java.home/lib/jaxws.properties)
  • Используйте системное свойство
  • Поиск с помощью загрузчика службы OSGi

Итак, проще говоря, добавление зависимости с реализацией provider решает проблему.

Для меня добавление зависимости jaxws-rt решило проблему.

Примечание: я столкнулся с другой проблемой зависимости, для которой мне нужно было добавить еще одну зависимость в stax-ex, чтобы решить все мои проблемы с зависимостями.