如何用resin发布webservice

 我来答
匿名用户
2016-07-13
展开全部
首先对生成的Java客户端代码写了main方法测试,调用webservice服务正常。
然后我把生成java客户端代码加拷到我现有的Web工程中,然后通过http的方式去调用该客户端代码去调用Webservice服务,结果报错。完整的报错信息如下:
java.io.FileNotFoundException: /500.jsp

org.springframework.web.util.NestedServletException: Handler processing
failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:823)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ExceptionInInitializerError
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:794)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:251)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:118)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:254)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:217)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:165)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:93)
at javax.xml.ws.Service.<init>(Service.java:56)
at ws.zjs.order.cn.com.zjs.edi.Query.<init>(Query.java:51)
at ws.zjs.order.cn.com.zjs.edi.QuerySoap_QuerySoap_Client.<clinit>(QuerySoap_QuerySoap_Client.java:30)
at com.specl.api.controller.webservicezjs.ZJSWebserviceConctroller.getOrderInfos(ZJSWebserviceConctroller.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:774)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: property "javax.xml.stream.supportDTD"
not supported
at com.caucho.xml.stream.XMLInputFactoryImpl.setProperty(XMLInputFactoryImpl.java:265)
at com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory.getXMLInputFactory(XMLStreamReaderFactory.java:101)
at com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory.<clinit>(XMLStreamReaderFactory.java:67)

我在这个Web项目中也写了个main方法通过客户端代码去调用webservice服务去测试,也就一点问题都没有。奇怪了,通过main方法

去访问没有问题,通过Web方式去访问就有问题!

因为以前没有做过Webservice开发,刚开始以为是CXF框架生成代码的问题,然后一直在网上找有关
CXF生成客户端的问题。都没有找到结果。

为了定位问题,我有新建了一个新的Web项目,把生成的java客户端代码也拷到我的新Web项目中。启动的是Tomcat服务器,

然后还是一样通过http请求调用该java客户端去调用Webservice服务。结果调用成功!更奇快了,为什么在这个Web项目中可以调用

Webservice服务成功?我感觉是不是我之前那个Web项目中的jar包有冲突。然后我就把我之前那个Web项目中jar都加到这个新Web项目

中的classpath中去,结果用Tomcat启动,通过http方式访问,发现还是没有问题!

而在回到我之前那个Web项目中去(说明:由于项目需要,开了两个Web服务器,一个是resin服务器,而这个Web项目就是跑在Resin上;另个一

是Tomcat服务器,跑了其他的项目),再次启动Resin服务器。问题依旧,仍然报同样的错误!

把上面的错误信息贴到网上去搜,但是仍然没有找到解决方案!正在一筹莫展的时候,我把最下面的错误信息“
java.lang.IllegalArgumentException: property "javax.xml.stream.supportDTD"
not supported

贴到网上去,无意中找到了一个信息:

resin web service 报异常信息 property "javax.xml.stream.isCoalescing" not supported
跟我的错误有点像,点进去一看,说是使用axis2开发webservice,部署到tomcat上没有问题,部署到resin上报下边异常。 我想了想,我那个报错Web工程,不就是部署在Resin上嘛。然后我改成部署到Tomcat上去,结果运行,也没有问题!心里兴奋了一下,貌似问题找到了,应该就是Resin服务器引起来的了!

然后我按照那里面的方法,
首先在resin.conf配置中找到如下代码:
<!-- Uncomment to use Resin's XML implementations
-
- <system-property javax.xml.parsers.DocumentBuilderFactory
- ="com.caucho.xml.parsers.XmlDocumentBuilderFactory"/>
- <system-property javax.xml.parsers.SAXParserFactory
- ="com.caucho.xml.parsers.XmlSAXParserFactory"/>
-->
如果已经使用,就替换下面,如果没有使用,就加上下面的配置
<system-property javax.xml.stream.XMLInputFactory="com.sun.xml.internal.stream.XMLInputFactoryImpl" />

我发现我的
resin.conf配置中没有
<system-property javax.xml.stream.XMLInputFactory="com.sun.xml.internal.stream.XMLInputFactoryImpl" />

配置项。加上后,重启Resin,然后再以Web方式访问,结果大功告成!证明了是Resin服务器引起来的!

这是我第一次通过Webservice客户端调用远程Webservice服务,碰到的问题。所以尽量详细的记下来,为自己,也为新手!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式