Исключение: java.util.ServiceConfigurationError

1

При использовании моего приложения:

Я использую jboss: 5.1.1 и jdk 1.6.

01:50:04,828 ERROR [[HelloWorld]] Servlet.service() for servlet HelloWorld threw exception
java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.jboss.ws.core.jaxws.spi.ProviderImpl not a subtype
    at java.util.ServiceLoader.fail(Unknown Source)
    at java.util.ServiceLoader.access$300(Unknown Source)
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
    at java.util.ServiceLoader$1.next(Unknown Source)
    at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:146)
    at javax.xml.ws.spi.Provider.provider(Provider.java:106)
    at javax.xml.ws.Service.<init>(Service.java:57)
    at com.service_instance.ServiceInstance.<init>(ServiceInstance.java:50)
    at com.getBusinessApp(CMDB.java:239)
    at com.test.HelloWorld.doGet(HelloWorld.java:51)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)

Пусть знает. Как это решить. Похоже на какую-то проблему с lib.

  • 1
    вы, кажется, используете неправильный подтип javax.xml.ws.spi.Provider . Пожалуйста, отправьте код, где вы столкнулись с этой проблемой.
  • 0
    предоставление некоторого кода может помочь, например, строка 239 CMDB
Теги:
java-ee
jboss5.x

1 ответ

3

У меня была та же проблема с развертыванием шлюза USSD с Mobicents Jain Slee, который работает поверх JBoss AS 5.1.0 GA. Шлюз должен подключаться к серверу через SOAP, поэтому я выбрал JAX-WS и сгенерировал исходный код из WSDL с помощью wsimport. Кстати, я использовал подобную процедуру для этого, чтобы создать дочерний проект Maven и сгенерировать java файлы для JAX-WS.


Не удалось выполнить развертывание с зависимостями, встроенными в.war файл

Мой первый подход состоял в том, чтобы включить все зависимости в файле.war, который был развернут в JBoss. Я думаю, что это достигается по умолчанию в Maven, и mvn install сделает это. В конечном итоге этот подход не удался, но по крайней мере мне нужно было узнать список файлов jar, которые были включены в файл.war, чтобы скопировать их позже в каталоге JBoss.

Я сделал много проблем с этим подходом и имел много ошибок журнала, хотя основной из них был следующим:

java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.jboss.ws.core.jaxws.spi.ProviderImpl not a subtype

Развертывание без зависимостей

Maven tweak

Таким образом, я добавил <scope>provided</scope> к зависимостям JAX-WS. Что-то вроде:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>com.sun.istack</groupId>
    <artifactId>istack-commons-runtime</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

Это создало гораздо более легкий файл.war.

Скопируйте и удалите банки в JBoss AS

Теперь, после развертывания.war файла, когда мой клиент SOAP попытался подключиться к веб-службе и выбрал исключение:

org.jboss.ws.metadata.wsdl.WSDLException: Invalid default namespace: null
at org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory.parse(WSDLDefinitionsFactory.java:134)
at org.jboss.ws.metadata.umdm.ServiceMetaData.getWsdlDefinitions(ServiceMetaData.java:293)
at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.buildMetaData(JAXWSClientMetaDataBuilder.java:84)
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>(ServiceDelegateImpl.java:138)
at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63)
at javax.xml.ws.Service.<init>(Service.java:79)
at org.ortelius.UssdServiceImplementation.<init>(UssdServiceImplementation.java:42)
at org.ortelius.OrteliusClient.sendUssdRequestToWs(OrteliusClient.java:28)

Кажется, что javax.xml.ws.Service вызывает org.jboss.ws.core.jaxws.spi.ProviderImpl, но он должен вызывать com.sun.xml.ws.spi.ProviderImpl, так что кажется, что существует конфликт с jar зависимости.

Чтобы избежать этой проблемы, необходимо было:

  1. Переместите или удалите все jar файлы JBoss, найденные в $JBOSS_HOME/lib/endorsed/.
  2. Скопируйте банки, включенные в мой начальный файл.war (один из неудавшихся развертываний) в $JBOSS_HOME/lib/endorsed/. все банки, вложенные в мой.war файл.

Это в основном сделало это.


Итоговые заметки

Должен признаться, что для выяснения этого была настоящая боль, и мне потребовалось около четырех дней, чтобы получить это и запустить. Я сделал много проблем с использованием jar-зависимостей, проверял журналы JBoss, удаленная отладка, сравнивал версии Java-пакетов и классов, искал банки в Интернете и читал много статей из руководств JBoss, блогов, StackOverflow, JavaRanch и т.д.

Клиент SOAP был очень прост, но развертывание в JBoss было довольно проблематичным. Мое решение не очень ортодоксально, так как оно сильно зависит от зависимостей файлов jar. Поэтому я не уверен, что это сработает для всех.

С уважением.

  • 0
    У меня такая же проблема на Wildfly. Пожалуйста, смотрите stackoverflow.com/questions/37158821/… . У вас есть новые идеи? Проблема в том, что я не могу «манипулировать» самой Wildfly, поскольку все работает в облаке, где у меня нет доступа для манипулирования сервером приложений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню