2010-07-11 67 views
5

当xercesImpl.jar作为库包含在内时,我无法在NetBeans Web应用程序中创建Web服务客户端。当xercesImpl.jar位于类路径上时,NetBeans Web服务客户端出现问题

使用NetBeans 6.9和GlassFish 3.0.1:

1)创建新的Web应用程序
2)创建一个新的Web服务
3)添加新的操作来创建Web服务(只让它返回null - 执行不重要)
4.)将Web服务部署到GlassFish(正常工作)
5.)将xercesImpl.jar(我使用的是版本2.9.1)作为库添加到Web服务(我需要我使用的第三方库的xerces)
6.)停止Glassfish。
7.)清理并构建项目。
8.)运行该项目。测试Web服务仍然有效(它确实)。
9.)创建一个新的Web服务客户端。将其指向WSDL(我只是将http://www.webservicex.com/CurrencyConvertor.asmx?wsdl用作测试)。
10.)停止Glassfish。
11.)清理并构建项目。示

错误消息:

C:\的NetBeansProjects \ WSTest \ nbproject文件\ JAXWS-的build.xml:43: 错误开始的wsimport:建立失效 (总时间:1秒)

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)重新启动的NetBeans。
13.)清理并构建项目。 (该版本现在可以运行)
14.)运行该项目。 GlassFish的启动,除了这一行错误消息罚款:

严重错误:在解决目录

15)加载Web服务测试页面产生在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 

关于我能做些什么来解决这个问题的想法?请注意,它只发生在创建新的Web服务客户端/参考后。即使有人可以建议我应该创建哪个项目(例如,它是NetBeans错误?Glassfish错误?JAX-WS错误?)等等,那就太好了。

回答

4

嗯,我终于找到了一个解决方案:

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

我需要什么做的是从xercesImpl.jar文件中删除这些文件:

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

当修改的JAR文件包含在我的项目中不再导致任何问题。

如果有人有一个整洁的解决方案,请让我知道。

+0

很久以前,但为我工作! :D – 2011-04-07 00:57:39

+0

现在链接似乎已经死亡。 – Igor 2013-11-04 18:57:36

0

我找到了与您的问题类似的解决方案。

我我罐内增加了以下文件:

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

这个文件的内容就是:

org.apache.xerces.parsers.XML11Configuration 

问候。