一、开发环境及安装(以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 WSDL,Next
图三
Class name要写类在项目中的全路径,写好后Load,Next
图四
指定输出文件的路径与名字,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、在src的client包中创建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#中调用跟上篇文章所讲的一样,在此不再赘述