Axis2教程 命令行发布,java2wsdl,wsdl2java

Axis2 WebService

实现webservice的开源框架有很多,axis是比较常用的一种,它能让你在tomcat上方便的发布webservice,它能帮助你把代码转化成wsdl文件,或者把wsdl文件转化成java代码,下面对axis2作详细说明,我会侧重讲cmd命令行发布和转化,因为最新版axis2的插件和多数eclipse版本不兼容。

 

一.下载axis2

下载地址:http://axis.apache.org/axis2/java/core/download.cgi

当前最新版本是1.6.1。


下载到本地:

Axis2-1.6.1-bin.zip里有axis2的jar包。

Axis2-1.6.1-docs.zip里有详细的帮助文档。

Axis2-1.6.1-src.zip里是源代码,方便爱学习的同学研究。

Axis2-1.6.1-war.zip里是axis的管理平台,直接扔到tomcat中就能用了。

二.创建项目


PipeService代码如下:

package com.pipe.webservice;

import com.pipe.bean.User;

public class PipeService {

      public String sayHello(String name) {

            return name + " say: hello";

      }

      public User getUser(String userName) {

            User user = new User();

            user.setName(userName);      

            return user;

      }

}

三. 发布WebService

1.     直接拷贝目录结构到tomcat发布

网上帮助:http://axis.apache.org/axis2/java/core/docs/userguide-buildingservices.html#deployrun

直接拷贝如下目录结构到webapps/axis2/WEB-INF/services

Services.xml

<service name="PipeService" >

      <description>

            Please Type your service description here

      </description>

      <messageReceivers>

            <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />

            <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

      </messageReceivers>

      <parameter name="ServiceClass">com.pipe.webservice.PipeService</parameter>

</service>

重启tomcat,成功。


2.     打包aar文件,通过页面upload发布

考虑到给客户发布的话不太方便,故下面把它打成aar包。

在C盘下建文件夹AxisSession,按上文提到的目录结构把class和server.xml放好。


通过cmd进入目录,

打命令:jarcvf pipeservice.aar .(注意最后的句点)


回到该目录可以看到pipeservice.aar,通过axis2管理平台上传。



用户名密码admin axis2


同样成功。


四.Java2wsdl

在最外层输全带包名的类名。

java2wsdl -cn com.pipe.webservice.PipeService


成功生成。


五.Wsdl2java

wsdl2java -uri PipeService.wsdl



生成2个文件。




public void downFile(StringfilePath) {

            System.out.println(filePath);

            StringtargetUrl = "http://localhost:8090/axis2/services/PipeService";

            try {

                  PipeServiceStubps = new PipeServiceStub(targetUrl);

                  PipeServiceStub.SayHellosayHello = new PipeServiceStub.SayHello();

                  PipeServiceStub.GetUsergetUser = new PipeServiceStub.GetUser();

                 

                  sayHello.setName("sam");

                  SayHelloResponse  shr = ps.sayHello(sayHello);

                 

                  getUser.setUserName("sam");              

                  GetUserResponsegur = ps.getUser(getUser);

                  Useru = gur.get_return();

                 

                  System.out.println(shr.get_return());

                  System.out.println(u.getName());

           

                 

            }catch (AxisFault e) {

                 

                  e.printStackTrace();

            }catch(RemoteException e) {

                  // TODOAuto-generated catch block

                  e.printStackTrace();

            }



作者:samsongbest 发表于2011-10-19 10:39:54 原文链接
阅读:20 评论:0 查看评论
posted on 2011-10-19 10:40  SamLove  阅读(8828)  评论(0编辑  收藏  举报