javax.xml.stream.FactoryFinder $ ConfigurationError: поставщик com.ctc.wstx.stax.WstxInputFactory не найден - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь разработать приложение GWT, которое вызывает существующий (работающий) веб-сервис. Я использую:

      - JAX-WS RI 2.1.6 in JDK 6
      - JDK 6
      - Glassfish V3
      - Eclipse 20110615-0604

Я протестировал 3-компонентные приложения независимо друг от друга, и они отлично работают:

1. GWT application - browser invoking GWT server side code. This is based on the GWT sample, http://code.google.com/webtoolkit/gettingstarted.html#create
2. Java application that uses JAX-WS proxy to invoke a Web Service. This is based on a JAX-WS hello world sample. I used wsimport on my wsdl to generate the proxy code.
3. Pre-existing Web Service, which I have the WSDL for.

Когда я объединяю 2 верхних фрагмента кода, чтобы создать приложение GWT, которое вызывает веб-службу из кода на стороне сервера GWT, мое объединенное приложение завершается сбоем, за исключением следующего. Я подозреваю некоторый конфликт классов между стандартными зависимостями GWT и стандартными зависимостями JAX-WS.

Я получаю следующее исключение:

javax.servlet.ServletContext log: Исключение при отправке входящего вызова RPC com.google.gwt.user.server.rpc.UnexpectedException: метод службы 'public abstract java.lang.String непредвиденное исключение: javax.xml.stream.FactoryFinder $ ConfigurationError: поставщик com.ctc.wstx.stax.WstxInputFactory не найден на com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure (RPC.java:385) на com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse (RPC.java:588) на com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:208) на com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost (RemoteServiceServlet.java:248) на com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost (AbstractRemoteServiceServlet.java:62) на javax.servlet.http.HttpServlet.service (HttpServlet.java:637) на javax.servlet.http.HttpServlet.service (HttpServlet.java:717) в org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:511) в org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1166) на com.google.appengine.tools.development.HeaderVerificationFilter.doFilter (HeaderVerificationFilter.java:35) в org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1157) на com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter (ServeBlobFilter.java:58) в org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1157) на com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter (TransactionCleanupFilter.java:43) в org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1157) на com.google.appengine.tools.development.StaticFileFilter.doFilter (StaticFileFilter.java:122) в org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1157) на com.google.appengine.tools.development.BackendServersFilter.doFilter (BackendServersFilter.java:97) в org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1157) на org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:388) в org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) в org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:182) на org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:765) на org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:418) на com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle (DevAppEngineWebAppContext.java:70) на org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:152) на com.google.appengine.tools.development.JettyContainerService $ ApiProxyHandler.handle (JettyContainerService.java:351) на org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:152) на org.mortbay.jetty.Server.handle (Server.java:326) на org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:542) в org.mortbay.jetty.HttpConnection $ RequestHandler.content (HttpConnection.java:938) в org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:755) в org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:218)на org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:404) на org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:409) в org.mortbay.thread.QueuedThreadPool $ PoolThread.run (QueuedThreadPool.java:582) Вызвано: javax.xml.stream.FactoryFinder $ ConfigurationError: Поставщик com.ctc.wstx.stax.WstxInputFactory не найден в javax.xml.stream.FactoryFinder.newInstance (FactoryFinder.java:154) в javax.xml.stream.FactoryFinder.findJarServiceProvider (FactoryFinder.java:308) в javax.xml.stream.FactoryFinder.find (FactoryFinder.java:233) в javax.xml.stream.XMLInputFactory.newInstance (XMLInputFactory.java:123) в com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory.getXMLInputFactory (XMLStreamReaderFactory.java:98) в com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory. (XMLStreamReaderFactory.java:67) в com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.createReader (RuntimeWSDLParser.java:794) в com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL (RuntimeWSDLParser.java:251) в com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse (RuntimeWSDLParser.java:118) на com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL (WSServiceDelegate.java:254) на com.sun.xml.internal.ws.client.WSServiceDelegate. (WSServiceDelegate.java:217) на com.sun.xml.internal.ws.client.WSServiceDelegate. (WSServiceDelegate.java:165) в com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate (ProviderImpl.java:93) на javax.xml.ws.Service. (Service.java:56) at amx.devenvironment.helloworld1.JavaHelloComponent100201106212354ServiceHelloWorldPTHelloWorldPT. (JavaHelloComponent100201106212354ServiceHelloWorldPTHelloWorldPT.java:46) at sample.HelloWorldGetResponse.getResponse (HelloWorldGetResponse.java:16) на com.mjg.training.server.GreetingServiceImpl.greetServer (GreetingServiceImpl.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) на com.google.appengine.tools.development.agent.runtime.Runtime.invoke (Runtime.java:100) на com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse (RPC.java:569)

Ранее я получал это исключение:

[ERROR] javax.servlet.ServletContext log: Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.lang.String com.mjg.training.client.GreetingService.greetServer(java.lang.String) throws java.lang.IllegalArgumentException' threw an unexpected exception: javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588)

Я решил это, добавив следующие строки в мой код:

System.setProperty("javax.xml.transform.TransformerFactory","com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");

Есть ли еще какие-нибудь аналогичные обходные пути для первого исключения.

Спасибо, Matt.

...