axis2发布web项目开发webservice和接口调用

来源:互联网 发布:网络教育几月发毕业证 编辑:程序博客网 时间:2024/05/22 06:43

  网上查了很久的axis2,但是和本人实际接口的使用情况严重不符,我通过网上搜寻终于完成axis2与已有项目完美集成,并生成客户端调用代码直接使用。现将经验总结如下,自己存的容易丢失,所以总结在网上,也方便大家参考,以后自己在用到时不至于到处找。

 

       1、将axis2.war解压开,将conflibmodulesservice四个文件夹复制到已有项目的WEB-INF下。

 

       2、开发接口类

public String addRemindTOSendMsg(String  nid,String mobile,String validitytime,String content){
  String rMsg="fail";
  System.out.println("调用进来了:nid="+nid+" \n mobile="+mobile
    +" \n validitytime="+validitytime+" \n content="+content);
  HInterfaceService hf=new HInterfaceService();//接口处理类
  rMsg=hf.addRemindTOSendMsg(nid,mobile,validitytime,content);//调用接口处理插入文件
  return rMsg;
 }

 

       3、在services文件下新建一个文件夹(任意取名),再新建META-INF文件夹,最后再新增services.xml,接口信息就写在这里面。

            具体路径:WEB-INF/services/myservice/META-INF/services.xml

另外,WEB-INF/services/myservice/META-INF/此目录下还必须在建立一个文件:ServiceData.xml。。否则程序运行时有可能出错。路径为:

WEB-INF/services/myservice/META-INF/ServiceData.xml

 

ServiceData.xml文件内容为:

<?xmlversion="1.0"encoding="UTF-8"?> 

 <!--此文件必须存在,否则执行异常 -->

<ServiceData> 

</ServiceData>

 

 

       4、编写services.xml信息如下(本人创建了多个接口,多个接口也就是开发是接口类多个方法而已):

<?xml version="1.0" encoding="UTF-8"?> 
<service name="HttxService"> 
    <description>  
         提醒接口调用服务(多种方式循环提醒)
    </description> 
    <parameter name="ServiceClass"> 
       com.besys.httx.ws.HcallInterface  --此处是接口类路径
    </parameter> 
     <operation name="addRemind">  --接口里面方法,
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation>
    <operation name="addRemindTOSendMsg"> 
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation>
    <operation name="closeRemind"> 
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation>
</service>

      5、将如下代码添加到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>  

 

      6.发布项目,然后在地址栏上输入http://localhost:8080/MyAxis/services/HttxService?wsdl,就能看到发布的项目了哦!!

 

      7、编写客户端程序

 Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码。
  wsdl2java.bat命令可以在<Axis2安装目录>/bin目录中找到。
  在使用wsdl2java.bat命令之前需要设置AXIS2_HOME环境变量,该变量值是<Axis2安装目录>。如果不设置,则将cmd命令窗口路径运行到axis2/bin目录下在执行命令语句。
  Windows控制台输出如下的命令行来生成调用WebService的代码:
  %AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8080/MyAxis/services/HttxService?wsdl
         -p client -s -o stub
  
其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。
  -p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。
  在执行完上面的命令后,就会发现在当前目录下多了个stub目录,
  stub/src/client目录可以找到一个  *Stub.java文件,

这个文件可以放到项目里面使用了;

 

以上主要是网友提供的

 

本人测试调用代码:

本人接口测试的执行操作,先切换到axis2/bin目录下然后输入命令执行语句

wsdl2java -uri http://localhost:9090/besys_httx/services/HttxService?wsdl -p client -s -o stub

 

 

执行后文件生成:

 

 

生成客户端文件后,将生成的文件复制到自己项目下,使用代码直接调用与返回

HttxServiceStub stub=new HttxServiceStub();//生成的客户端调用文件
   //发短信
   AddRemindTOSendMsg uf=new AddRemindTOSendMsg();//需调用的接口方法,直接进行实例化
   //方法参数 为方法中参数传值
   uf.setNid("test005");
   uf.setMobile("18088888888");
   uf.setValiditytime("5");
   uf.setContent("985255fsdfsf ");
   //调用接口
   AddRemindTOSendMsgResponse res=stub.addRemindTOSendMsg(uf);
   //获取返回值,本人的接口返回的是一个字符串,如果返回一个对象,则可以用Response获取对象返回结果属性
   String result=res.get_return();
   System.out.println("------调用结果:"+result);

 

 

特别鸣谢:

 

网友:wangronaldo的分享:http://wangronaldo.iteye.com/blog/1456441

参考的还有其他的人的分享资料,这里不再贴出。

整理的比较乱,能看懂关键点就行了。

搜索
1 0