axis2 入门 quickstart(webservice Requested resource not found)

axis2 入门 quickstart(webservice Requested resource not found)

axis2入门最多的人应该是从axis2的官方教程中的quickstart开始,但是axis2的官方教程中存在着一个小小的错误,本文详细谢谢这个错误的产生及原因。对于细节的操作因为下边有官方及翻译的版本,我不再细说
官方quickstart doc url
http://ws.apache.org/axis2/1_1_1/quickstartguide.html#introduction

一个兄弟翻译的版本
http://hideto.javaeye.com/blog/56835

按照教程中讲解的,放好war包,编译完成例子,把StockQuoteService.aar拷贝到webapps\axis2\WEB-INF\services下,后台出现部署成功的提示。
按照教程依次访问
http://localhost:8080/axis2/services/listServices
http://localhost:8080/axis2/services/StockQuoteService?wsdl
http://localhost:8080/axis2/services/StockQuoteService?xsd
http://localhost:8080/axis2/rest/StockQuoteService/getPrice?symbol=IBM
前三个都能成功,但是最后一个访问的时候一直会报错误,页面提示“Requested resource not found”
试试下边的
http://localhost:8080/axis2/rest/StockQuoteService/update?symbol=IBM&price=100
一样的错误,什么原因呢?
最开始想到的是打开debug看看,结果如下:
 1 [DEBUG] Start expire sessions StandardManager at  1233371524421  sessioncount  1
 2 [DEBUG] End expire sessions StandardManager processingTime  0  expired sessions:  0
 3 [DEBUG] servletPath =/ axis2 - web / Error / error404.jsp, pathInfo = null , queryString = null , name = null
 4 [DEBUG]  Path Based Forward
 5 [DEBUG] JspEngine  -->   / axis2 - web / Error / error404.jsp
 6 [DEBUG]          ServletPath:  / axis2 - web / Error / error404.jsp
 7 [DEBUG]             PathInfo:  null
 8 [DEBUG]             RealPath: D:\appserver\apache - tomcat - 5.5 . 25 \webapps\axis2\axis2 - web\Error\error404.jsp
 9 [DEBUG]           RequestURI:  / axis2 / axis2 - web / Error / error404.jsp
10 [DEBUG]          QueryString: symbol = IBM
11 [DEBUG]       Request Params: 
12 [DEBUG]          symbol  =  IBM
13 [DEBUG] servletPath =/ axis2 - web / include / httpbase.jsp, pathInfo = null , queryString = null , name = null
14 [DEBUG]  Path Based Include
15 [DEBUG] JspEngine  -->   / axis2 - web / include / httpbase.jsp
16 [DEBUG]          ServletPath:  / axis2 - web / Error / error404.jsp
17 [DEBUG]             PathInfo:  null
18 [DEBUG]             RealPath: D:\appserver\apache - tomcat - 5.5 . 25 \webapps\axis2\axis2 - web\include\httpbase.jsp
19 [DEBUG]           RequestURI:  / axis2 / axis2 - web / Error / error404.jsp
20 [DEBUG]          QueryString: symbol = IBM
21 [DEBUG]       Request Params: 
22 [DEBUG]          symbol  =  IBM
23 [DEBUG]  Disabling the response  for  futher output
24
看到原因是404错误,这个错误太常见了,想想什么原因?先看看axis2 war包的结构吧,第一个当然是web.xml打开看了一遍,有个印象,然后在看看,没有用什么框架,那关键还是web.xml,仔细看这段
 1   < servlet-mapping >
 2          < servlet-name > AxisServlet </ servlet-name >
 3          < url-pattern > /servlet/AxisServlet </ url-pattern >
 4      </ servlet-mapping >
 5
 6      < servlet-mapping >
 7          < servlet-name > AxisServlet </ servlet-name >
 8          < url-pattern > *.jws </ url-pattern >
 9      </ servlet-mapping >
10
11      < servlet-mapping >
12          < servlet-name > AxisServlet </ servlet-name >
13          < url-pattern > /services/* </ url-pattern >
14      </ servlet-mapping >
说明大部分的处理都是通过AxisServlet来转发的,而这个servlet只过滤以上三种情况,那么是不是官方文档错误呢?是不是第四个访问也需要让AxisServlet来处理呢?试试吧,把 http://localhost:8080/axis2/rest/StockQuoteService/getPrice?symbol=IBM改成
http://localhost:8080/axis2/services/StockQuoteService/getPrice?symbol=IBM
访问,成功返回需要的值,问题解决。webservice因为封装的多,所以debug困难,一个小问题都要忙活半天,还是以猜测为主,呵呵。

另外补充一个小tips,只要以“爆炸”方式部署webservice,就是不打aar 包,就能debug   pojo中的代码了。

你可能感兴趣的:(axis2 入门 quickstart(webservice Requested resource not found))