1、首先打开axis2文件夹里面的axis2-1.6.2-war.zip压缩文件,然后把解压后的war包放到tomcat的webapps里,启动tomcat的时候就会自动生成相应的文件,放进去就不用管它了。(剩下的几个压缩文件为帮助文档和源码)这时候启动tomcat,访问http://127.0.0.1:8080/axis2/,如果能看到axis2的Welcome!页面,就说明axis2部署成功了。点一下页面选项Services,会跳转到axis2自带的服务页面;另外点击Administration选项,输入用户名:admin,密码:axis2,登陆进去可以配置axis2的一些配置,以及发布更新aar包
2、新建一个动态web project,起名Test,编写java类,命名HelloWorld,具体代码如下:packagecom.inspur.service;publicclassHelloWorld {publicString sayHello(String name){return"Hello,"+name+".";}publicString saySorry(String name){return"Sorry,"+name+".";}publicString getWorld(){return"Hello,World";}}此类相当于提供了一个HelloWorld接口,内含三个服务,前两个获取使用者传入的值来返回相应的结果,后一个直接调用就能返回相应的结果。
3、把tomcat安装目录下的webapps/axis2/WEB-INF下的modules、service和conf文件夹拷到 HelloWorld项目webContent下的WEB-INF下,把lib里面的jar包,也拷到项目的lib里面。
4、然后在项目WEB-INF下的services文件夹里新建HelloWorld/怡觎现喾META-INF路径,META-INF下新建 services.xml,内容如下:<servicename="HelloWorld"><description>MyService </description><parametername="ServiceClass">com.inspur.service.HelloWorld</parameter><operationname="sayHello"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/></operation><operationname="saySorry"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/></operation><operationname="getWorld"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/></operation></service>此配置文件的作用就是相当于一个映射,把提供服务的实体类的具体路径映射出来,三个operation- name对应三个方法名,而且名字一定要一一对应,不能随意更改。class引用为固定的,无需变动。
5、在项目的web.xml里添上如下配置:<!-- Axis2 config start --><servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern></servlet-mapping><!-- Axis2 end --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
6、(这一步可以先跳过去,如果下一步执行页面报500,可以回头看一下这一步)因为项目自定义的过滤器会和axis2配置起冲突,所以我在过滤器里面把起冲突的services文件夹忽略掉,(各位具体情况具体调整)所以继续修改项目web.xml文件:找到<filter-name>webDispatcher</filter-name> <filter-class>org.loushang.internet.servlet.WebDispatcherFilter</filter-class> <init-param> <param-name>excludes</param-name> <param-value>/*/aaa/*.jsp,/aaa/*</param-value></init-param>在<param-value>/*/aaa/*.jsp,/aaa/*</param-value>中添加上,/*/services/*变成<param-value>/*/aaa/*.jsp,/aaa/*,/*/services/*</param-value>即可。
7、这时候就能通过http://127.0.0.1:8080/Test/services/HelloWorld/getWorld来访问自己发布的webservice,getWorld为方法名,如果为有参方法,要加上(?name=要传的值)“name”要和实体类里面方法的参数名一致,例如http://127.0.0.1:8080/Test/services/HelloWorld/sayHello?name=xxxx
8、另外也可以通过访问http://127.0.0.1:8080/Test/services/HelloWorld?wsdl来查看发布的webservice网络服务描述,里面自动生成介绍你的Web service有什么功能,以及每个函数调用时的参数,描述Web service及其函数、参数和返回值。相当于针对你发布的webservice的一个使用文档。到这里,使用axis2发布webservice就算告一段落。
9、另附上使用axis2发布webservice的宛鳘艺荤另一种方法,亲测可用,有兴趣可以试一下。1、(第一步和方法一步骤一样)axis2.war包放到tomcat的webapps目录下,启动tomcat,访问地址http://127.0.0.1:8080/axis2/,即可访问axis2的Welcome!页面。访问地址http://127.0.0.1:8080/axis2/services/listServices可访问服务列表,和前面步骤一样,就不赘述。2、编译服务端项目HelloWorld后,将HelloWorld.class文件放到tomcat\webapps\axis2\WEB-INF\pojo目录中【注:若没有pojo目录,则手动新建该目录】。在浏览器地址栏中输入如下的URL:http://127.0.0.1:8080/axis2/services/listServices 即可访问刷新后的服务列表。【注:POJO类不能使用package关键字声明包,若使用axis2管理平台发布,则需要修改 HelloWorld类,去掉package字段。意思是java文件编译成class文件之前,只能放在src下面的 default默认包里面,不能含有package,不能新建包,不然webservice就会访问失败,这也算是一个局限性】