axis2和已有web项目集成

来源:互联网 发布:论坛抢楼软件 编辑:程序博客网 时间:2024/05/19 16:22

建立服务端

最近项目需要开发web service,找了一下资料,打算用axis2开发,但是网上很难找到一个完整demo。
所以整理总结一下,希望多大家有帮助!
 
有一个最简单的方法就是把axis2.war中的内容作为Web Project的基础, 来进行开发. 

不过为了更清楚的了解如何在一个已有的Web Project中嵌入axis2,那就手动来配置。大致分如下几个步骤:

一、新建Web Project,名为“WebServiceDemo

二、下载axis2-1.5-war.zip包(本来想发附件也发出来,发现csdn无法挂附件,只有麻烦各位再到其他地方下载了,当然也可以问我要,加QQ470312712),

解压缩

axis2/WEB-INF/lib里的jar包拷贝到WebServiceDemo/WebRoot/WEB-INF/lib/

axis2.war/axis2-web拷贝至WebServiceDemo/WebRoot/axis2-web/(这一步如果不想集成axis2的控制信息,可不需要

三、配置axis2 servlet

打开WebServiceDemo/WebRoot/WEB-INF/web.xml,增加如下配置:

     
<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服务类

package com.ws;public class MyService {public String getName(String id){System.out.println("-------------"+id+"--------");return "pj";}}

五、配置Web Service.

由于axis2已嵌入到WebServiceDemo项目中,所以web service就不用打包成aar,而是直接在/WEB-INF目录下创建相应的文件夹和services.xml

 

六、services.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 接口服务类 -->
<serviceGroup>
 
<service name="SampleService">
 <description>
  This service is common webService.
 </description>

<!-- 这里需要配置提供的服务类名包括类的路径-->
 <parameter name="ServiceClass">com.ws.MyService
 </parameter>

<!--以下标签的配置功能是说明此服务是有输入和输出功能-->
 <messageReceivers>
  <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
   class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
 </messageReceivers>
</service>

</serviceGroup>

 到这里服务端已经配置完成!很简单吧!然后启动tomcat,访问地址粗线wsdl文件,说明配置成功!

 

在浏览器中访问http://localhost:8080/ws/services/SampleService?wsdl可以查看到该Web服务的描述文件说明发布成功!

 

建立客户端

我查看了网上总结的,有多种方式生成客户端,我采用的是axis2对myeclipse的插件生成,个人觉得比较简单!无需配置环境变量!

 

一、先下载axis2-eclipse-codegen-wizard.jar和axis2-eclipse-service-archiver-wizard.jar

然后把上述两个文件解压出来,然后再复制backport-util-concurrent-3.1.jar(需要在单独网上下载,axis2没自带)和geronimo-stax-api_1.0_spec-1.0.1.jar

到axis2-eclipse-codegen-wizard(解压出来的文件)里面的lib里面!

然后修改axis2-eclipse-codegen-wizard里面的plugin.xml文件,在节点runtime下添加如下内容


<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
         <export name="*"/>
  </library>
  <library name="lib/backport-util-concurrent-3.1.jar">
   <export name="*"/>
  </library>

 

二、把刚才axis2-eclipse-codegen-wizard和axis2-eclipse-service-archiver-wizard复制到myeclipse(我用的是myeclipse8.6)根目录下的dropins文件夹下

  (特别要注意,最后修改后在复制到myeclipse的dropins文件夹下,要是已经是复制进去才修改,请剪切出来,然后启动myeclipse关掉,在复制进去

 

三、 打开myeclipse,新建一个项目,在窗体中看到如下:

看到axis2下的连个选项,说明安装插件成功!

 

四、生成客户端,新建醒目,选择以上两个选项中的axis2 code generator,然后下一步出现

选第一个,代表的意思是用wsdl文件生成客户端!点击下一步出现

 

五、 输入wsdl文件路径,该文件路径可以是本地的文件,也可以是网络上的地址(如果是网络行的,必须要联网哦)点击下一步

 

六、如果上一步的wsdl没错,那么这一步默认就行了

 

七、选要输出到的项目,你可以先建好一个web project项目,然后选择该项目,(注意,选择到项目名称即可)然后点击完成。(记得要打上add the axis2 codeger...这个复选框

 

八、生成的项目是不是好多小红叉啊,没关系,先把axis2的包添加到claspath下,添加jar都懂吧,这里就不啰嗦!

添加完后是不是还有小红叉啊,不要紧张,这个是这个插件的一个小bug,解决方案如下:

点击小红叉的地方,出现add unimplemented methods 实现方法就可以,是不是发现还有红叉啊,别那么紧张嘛,下载axis2-adb-1.4.1.jar添加到classpath即可

 

编写客户端如下

  SayHelloStub sayHelloStub=new SayHelloStub();
  
  
  SayHelloStub.SayHelloMethod  sayHelloMethod=new SayHelloStub.SayHelloMethod();
  

//传递的参数
  sayHelloMethod.setName("pjn");
  //调用sayHelloMethod方法
  System.out.println(sayHelloStub.sayHelloMethod(sayHelloMethod).get_return());
  
  SayHelloStub.AddStudnet addStudnet=new SayHelloStub.AddStudnet();
  
  Student student=new Student();
  student.setName("pangjian");
  addStudnet.setStudent(student);
  
  System.out.println(sayHelloStub.addStudnet(addStudnet).get_return());

 完成!如有问题可以联系我!

原创粉丝点击