axis2实现Webservice独立部署简单案例

来源:互联网 发布:汇川plc编程软件注册机 编辑:程序博客网 时间:2024/05/29 11:54

        首先需要从官网下载两个压缩包,一个是axis2-1.6.2-war.zip,一个是axis2-1.6.2-bin.zip。 其中第一个zip中有tomcat服务器需要的支持类jar包,我们把其中的axis2.war放在tomcat目录的webapps下,浏览器http://localhost:端口号/axis2/测试通过。下面我们开始进入代码。

        1,     新建JavaWeb工程,导入所需jar包;这些jar包位于  axis2-1.6.2-bin.zip\axis2-1.6.2\lib 下,把所有的jar包放入WEB-INF的lib下。

        2,    新建接口服务类,例如 com/accp/test 包下  Service.java  :

        

package com.accp.test;/** * 接口服务层 */public class Service {public String sayHelloNew(String ni) {return "船行荡飞 荡在金山喽喂 遍地金黄再照吾欲望"+ni;}public String sayHelloToPersonNew(String name) {if (name == null) {name = "nobody";}//System.out.println("啊呀");return "巫山口哎,晚风狂哎," + name;}public void updateData(String data) {System.out.println(data + " 已更新。");}}
         3,      编写WebService接口的配置文件,放在META-INF下 ,名字为 services.xml :

       

<?xml version="1.0" encoding="UTF-8"?><service name="HelloServiceNew"><description>Web Service         </description><parameter name="ServiceClass">com.accp.test.Service          </parameter><messageReceivers><messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /><messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /></messageReceivers></service>  

            4,       在WEB-INF下新建文件夹services,开始打aar的包 :

                          在F:\ws 随便新建一个文件夹名字为ws,在ws里新建文件夹F:\ws\com\accp\test  注意,此处对应着服务类的包名com.accp.test。把Service.java编译成Service.class文件放于其中;然后新建  F:\ws\META-INF 文件夹 把3中的services.xml放于其中。完整目录为F:\ws\META-INF\services.xml与F:\ws\com\accp\test\Service.class;

                         开始打aar的包:运行cmd,进去F:\ws目录,输入 jar cvf ws.aar com META-INF  回车,ok。

           5,      配置web.xml,加载服务   :

  

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <!-- 此处指定加载aar -->  <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></web-app>

            6,        编写测试类 Test.java  :

      

package com.accp.test;import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;/* * 独立部署 */public class Test {public static void main(String[] args) throws AxisFault {RPCServiceClient serviceClient;String result = null;try {serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();EndpointReference targetEPR = new EndpointReference("http://localhost:8000/Test/services/HelloServiceNew?wsdl");options.setTo(targetEPR);Object[] opAddEntryArgs = new Object[] {"遍地金黄  远望 照吾欲望"};QName opAddEntry = new QName("http://test.accp.com","sayHelloNew");Class[] classes = new Class[] { String.class };Object[] orgs = serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes);result = orgs[0].toString();} catch (AxisFault e1) {e1.printStackTrace();}System.out.println(result);}}

           注意 ,启动tomcat时,请用debug模式,否则可能出现本地服务类修改后,测试类没反应的现象。  其他详细解释网上很多,具体demo已上传CSDN,第一次写这东西,下面这个框子死活删不掉了,谅解啊...


     
                                                

1 0
原创粉丝点击