基于Axis2的webservice开发及跨平台跨语言调用之二

一、开发环境及安装(以1.6.2版本为例)

所需要的包如下:

1、axis2-1.6.2-war.zip(解压后为axis2-1.6.2-war文件夹)

2、axis2-1.6.2-bin.zip(解压后为axis2-1.6.2文件夹,包括一些需要的JAR)

3、axis2-eclipse-codegen-plugin-1.6.2.zip(用来将服务代码生成wsdl文件以及解析将wsdl文件生成客户端stub代码的插件)

4、axis2-eclipse-service-plugin-1.6.2.zip(用来将服务代码打包成后缀名为.aar文件的插件)

 

对于axis2的安装不再解释,上篇文章已说过,现在说下Eclipse的插件安装方法。

方法一:也是最简单的方法,把插件解压下来之后放入%Eclipse_Home%\plugins中,插件安装完毕,axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2安装完毕之后,在Eclipse中打开File->New->Other,若能看到如图一内容,说明插件配置成功。

 

图一

 

方法二、用Link方式,把要安装的插件放在一个专门的文件夹里,比如Eclipse_plugins,然后在%Eclipse_Home%中建一个名为links的文件夹,文件夹中建一个文本文档,把后缀改为.link,文件名可以随便取,比如我的是Axis2.link,用记事本打开后添加以下一句话

path=D:\\soft_profession\\Win7\\Eclipse\\eclipse_plugins\\Axis2

因为我的插件放在D:\soft_profession\Win7\Eclipse\eclipse_plugins\Axis2中,注意要把路径中的反斜杠改为双反斜杠。启动Eclipse之后跟图一看到的是相同的效果。

其他插件的安装也可以按这种方法安装,.link文件可以多个也可以把其他插件的path值放到同一个.link文件中。

 

个人建议用第二种方式安装,因为当第一种方式安装的插件很多时,会造成Eclipse臃肿,启动时间过长,而且删除插件的时候不方便,第二种方式因为插件不在Eclipse\plugins中,不会造成臃肿的现象,在更换版本时插件也不用重新安装,只需把links文件夹放到新的Eclipse中就可以,而且对于不用的插件可以直接删除path值就行,卸掉不用的插件启动也相对快点。

 

二、创建及发布服务

1、创建Java工程,File->New->Project->Java Project

 

2、创建类,添加如下代码:

package service;

publicclass Hello {

    public String sayhello(String usename){

       return"Helo:"+usename;

    }

    //创建一个说Hello的服务

}

 

3、打开axis2-eclipse-service-plugin插件:File->New->Other->Axis2 Wizards->Axis2 Service Archiver点击Next,输入Class文件路径,写到bin一级(如果新建项目有改Class文件路径的,要写到在项目的Java Build Path->Source中的路径)。

 

图二

 

Next,选择Skip WSDLNext

 

图三

 

Class name要写类在项目中的全路径,写好后LoadNext

 

图四

 

指定输出文件的路径与名字,Finish

 

图五

 

到此,一个服务的.arr文件已经生成,将此文件移至%Tomcat%\webapps\axis2\WEB-INF\services下,启动tomcat

 

图六

 

浏览器中输入http://localhost:8080/axis2/  点击Service,将看到图七所示部署的服务,点击服务名即可得到相应的WSDL文件。

 

图七

 

至此项目部署完毕。

 

部署项目时,两个常见错误及解决(如果没错,直接跳到第三点,忽略下面的介绍)

Faulty Service(错误服务):

 

图八

 

图九

 

这个问题是因为JDK版本的问题,在项目中要把JDK的版本选到跟安装的JDK相符的版本,JDK版本在项目的Properties->Java Compiler中修改,如图十所示

 

图十

 

如果之前发布过webservice,不管是在services下还是在POJO中,当发布同名的webservice时会出现图十一所示错误,此时该把同名的webservice去掉。

 

图十一

 

三、调用服务

1、生成客户端stub代码

打开axis2-eclipse-codegen-plugin插件File->New->Other->Axis2 Wizards->Axis2 Code Generator

Next,默认选择Generate Java source code from a WSDL file(根据WSDL生成webservice客户端的java代码):

 

图十二

 

Next,输入WSDL路径:http://localhost:8080/axis2/services/Axis2WebService?wsdl

Next->Next,指定生成的代码放置的工程,可以选择当前工作空间中已有的工程,本例直接把生成的代码放入Axis2WebService项目中(直接选中项目名就行,不用选到src的包上),点击Finish完成。

 

图十三

 

刷新Axis2WebService项目除了之前的Hello.java类之外多了其他的类

 

图十四

 

2、客户端stub代码生成之后由于缺少Axis2包,项目报错,此时添加Axis2包,如果没有新建Axis2用户库,则需把Axis2/lib中的包直接导入,有建Axis2用户库,只需把用户库给添加进来就行。

 

3、在srcclient包中创建TestService类,用来测试webservice,代码如下:

package client;

import java.rmi.RemoteException;

import service.Axis2WebService;

import service.Axis2WebServiceStub;

import service.Sayhello;

import service.SayhelloResponse;

publicclass TestService {

 
    /**

     * @param args

     */

    publicstaticvoid main(String[] args)throws RemoteException{

       //TODO Auto-generated method stub

       Axis2WebService WS=new Axis2WebServiceStub();//创建客户端对象

       Sayhello sayHello=new Sayhello();//创建Sayhello类的对象

       sayHello.setUsename("qiuchao");

       SayhelloResponse sayHelloResponse=WS.sayhello(sayHello);//调用web服务

        System.out.println(sayHelloResponse.get_return());//返回结果

    }

}


 执行程序之后,在控制台将返回如下结果

 

图十五

 

四、在C#中调用

C#中调用跟上篇文章所讲的一样,在此不再赘述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值