黑马程序员技术交流社区

标题: 关于webService [打印本页]

作者: HM周磊    时间: 2013-9-17 00:00
标题: 关于webService
本帖最后由 HM周磊 于 2013-9-17 17:17 编辑

我使用Axis2生成的webService服务端代码,结合hibernate访问数据库。将项目发布到服务器,可以正常访问。
可是使用里面的方法时查不出数据库中的数据,并报了如下错误:

22:41:38,781 ERROR AxisEngine:219 - The service cannot be found for the endpoint reference (EPR) /crm/services/findnoassociationCustomers
org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (EPR) /crm/services/findnoassociationCustomers
        at org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:78)
        at org.apache.axis2.engine.Phase.invoke(Phase.java:329)
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:168)
        at org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:144)
        at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:139)
        at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:837)
        at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:273)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)这是我的项目结构图!
配置文件都是生成的,应该没有错吧,是否我哪里放错了配置文件,求高手解答!




作者: 落木随风    时间: 2013-9-17 07:49
楼主学的好多,很高端的样子,给你找了份答案。。

这个错误指webservice的接入点不正确,可能情况
1)你的访问路径有误,及你访问地址不正确,打到浏览器中看不到输出wsdl
  2)打到浏览器中能看到wsdl,但客户端访问的时候仍报The service cannot be found for the endpoint reference (EPR) ...,这并不代表你的webservice没发布成功或有误,或你输入的访问连接不正确,关键看你在浏览器中输入连接打出wsdl最后的一段描述
<wsdl:service ame="isc">
<wsdl:port name="isc_services" binding="tns:isc_services">
<soap:address
location="http://192.168.50.234:7001/WebRoot/service/isc/"/>
</wsdl:port>
</wsdl:port>
</wsdl:service>

在这段描述中可以看到当访问wsdl连接时他会自动去转向这个地址(这个地址是axis2根据配置自动生成的),可能是这个地址访问不到,有可能你的web.xml中拦截不对,我的因为某些原因我在web.xml里面配置的axisServlet拦截/service/*,而axis2原来自动转向的地址location="http://
192.168.50.234:7001/WebRoot/services/isc/,所以我的拦截不到,若想更改axis2的自动生成链接则一切尽在你部署是copy进去的conf/axis2.xml中了,在这里面有一个
<parameter name="servicePath">service</parameter>参数配置,你将这个配置成你想拦截的我的改成service,这样访问时自动转向的地址就是location="http://192.168.50.234:7001/WebRoot/service/isc/,根据web。xml中的配置即可拦截到访问了
作者: HM周磊    时间: 2013-9-17 17:10
O(∩_∩)O谢谢回答!!
问题已经解决,说来惭愧,竟然是我的访问地址写错了。。。
粗心是把杀猪刀,浪费了我多少时间{:soso_e101:}

作者: HM周磊    时间: 2013-9-17 17:11
落木随风 发表于 2013-9-17 07:49
楼主学的好多,很高端的样子,给你找了份答案。。

这个错误指webservice的接入点不正确,可能情况

O(∩_∩)O谢谢回答!!
问题已经解决,说来惭愧,竟然是我的访问地址写错了。。。
粗心是把杀猪刀,浪费了我多少时间{:soso_e101:}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2