2010-07-11 6 views
5

Non riesco a creare un client di servizio Web nell'applicazione Web NetBeans quando xercesImpl.jar è incluso come libreria.Problema con NetBeans Web Service Client quando xercesImpl.jar è su classpath

Utilizzando NetBeans 6.9 e GlassFish 3.0.1:

1.) Creare nuova applicazione Web
2.) Creare un nuovo servizio web
3.) Aggiungere una nuova operazione al servizio web creato (solo restituire null - l'implementazione non è importante)
4.) Distribuire il servizio Web su GlassFish (funziona correttamente)
5.) Aggiungere xercesImpl.jar (sto utilizzando la versione 2.9.1) come libreria al servizio Web (Ho bisogno di xerces per una libreria di terze parti che sto usando)
6.) Stop Glassfish.
7.) Pulisci e crea il progetto.
8.) Esegui il progetto. Verificare che il servizio Web funzioni ancora (lo fa).
9.) Creare un nuovo client di servizio Web. Indicalo a un WSDL (sto usando http://www.webservicex.com/CurrencyConvertor.asmx?wsdl solo come test).
10.) Interrompere Glassfish.
11.) Pulisci e crea il progetto.

messaggio di errore è visualizzato:

C: \ NetBeansProjects \ WSTest \ nbproject \ jaxws-build.xml: 43: avviare errore wsimport: generazione non riuscita (tempo totale: 1 secondo)

linea 43 è:

<wsimport sourcedestdir="${build.generated.dir}/jax-wsCache/CurrencyConvertor" 
destdir="${build.generated.dir}/jax-wsCache/CurrencyConvertor" wsdl= 
"${basedir}/${conf-dir}xml-resources/web-service-references/ 
CurrencyConvertor/wsdl/www.webservicex.com/CurrencyConvertor.asmx.wsdl" 
catalog="catalog.xml" extension="true" verbose="true" 
wsdlLocation="http://www.webservicex.com/CurrencyConvertor.asmx?wsdl" 
xnocompile="true" xendorsed="true"> 

12.) Riavvia NetBeans.
13.) Pulisci e crea il progetto. (La build ora funziona)
14.) Esegui il progetto. GlassFish avvia benissimo tranne questo messaggio di errore di una sola riga:

GRAVI: errore nella risoluzione del catalogo

15.) il caricamento della pagina Web Service Tester produce la seguente eccezione nel registro GlassFish:

WARNING: Servlet web service endpoint 'NewWebService' failure 
java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration], because it has not yet been started, or was already stopped 
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2085) 
at org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1018) 
at org.glassfish.web.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1255) 
at org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source) 
at org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source) 
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) 
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) 
at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source) 
at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source) 
at com.sun.org.apache.xml.internal.resolver.readers.SAXCatalogReader.readCatalog(SAXCatalogReader.java:238) 
at com.sun.org.apache.xml.internal.resolver.Catalog.parseCatalog(Catalog.java:680) 
at com.sun.xml.ws.util.xml.XmlUtil.createEntityResolver(XmlUtil.java:270) 
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560) 
at org.glassfish.webservices.JAXWSServlet.registerEndpoint(JAXWSServlet.java:405) 
at org.glassfish.webservices.JAXWSServlet.doInit(JAXWSServlet.java:264) 
at org.glassfish.webservices.JAXWSServlet.init(JAXWSServlet.java:99) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1428) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1060) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:187) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) 
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) 
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:69) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) 
at java.lang.Thread.run(Thread.java:619) 

WARNING: StandardWrapperValve[NewWebService]: PWC1382: Allocate exception for servlet NewWebService 
javax.servlet.ServletException 
at org.glassfish.webservices.JAXWSServlet.doInit(JAXWSServlet.java:271) 
at org.glassfish.webservices.JAXWSServlet.init(JAXWSServlet.java:99) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1428) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1060) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:187) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) 
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) 
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:69) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) 
at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration], because it has not yet been started, or was already stopped 
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2085) 
at org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1018) 
at org.glassfish.web.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1255) 
at org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source) 
at org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source) 
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) 
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) 
at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source) 
at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source) 
at com.sun.org.apache.xml.internal.resolver.readers.SAXCatalogReader.readCatalog(SAXCatalogReader.java:238) 
at com.sun.org.apache.xml.internal.resolver.Catalog.parseCatalog(Catalog.java:680) 
at com.sun.xml.ws.util.xml.XmlUtil.createEntityResolver(XmlUtil.java:270) 
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560) 
at org.glassfish.webservices.JAXWSServlet.registerEndpoint(JAXWSServlet.java:405) 
at org.glassfish.webservices.JAXWSServlet.doInit(JAXWSServlet.java:264) 
... 26 more 

Qualche idea su cosa posso fare per risolvere questo problema? Si noti che accade solo dopo aver creato un nuovo client/riferimento di servizio Web. Anche se qualcuno potrebbe suggerire quale progetto dovrei creare un bug contro (cioè un errore di NetBeans? Un errore di Glassfish? Un errore di JAX-WS? Ecc.), Sarebbe buono.

risposta

4

Beh ho finalmente trovato una soluzione:

http://forums.java.net/jive/thread.jspa?threadID=59445

quello che dovevo fare era per rimuovere questi file dal file xercesImpl.jar:

META-INF/services/javax.xml.parsers.DocumentBuilderFactory 
META-INF/services/javax.xml.parsers.SAXParserFactory 

Quando il vaso modificato il file è incluso nel mio progetto non causa più alcun problema.

Se qualcuno ha una soluzione migliore, per favore fatemelo sapere.

+0

molto tempo fa, ma ha funzionato per me! : D –

+0

Link sembra essere morto ora. – Igor

0

Ho trovato la soluzione per il mio problema che è simile al tuo.

ho aggiunto dentro il mio vaso il seguente file:

META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration

Il contenuto di questo file è solo:

org.apache.xerces.parsers.XML11Configuration 

saluti.