DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

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中的代码了。

posted on 2009-01-31 11:20 dreamstone 阅读(3850) 评论(0)  编辑  收藏 所属分类: 其它开源框架


只有注册用户登录后才能发表评论。


网站导航: