yixiaoqi00 2012-07-13
我用的是eclipse indigo release2、axis2 1.6.2、 tomcat6.0。
jdk已经安装并成功配置。
第一步:下载eclipseindigorelease2,下载地址:http://mirrors.ustc.edu.cn/eclipse/technology/epp/downloads/release/indigo/SR2/eclipse-jee-indigo-SR2-win32.zip
解压后直接可用。
第二步:下载并安装tomcat插件
http://www.fayea.com/apache-mirror/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.zip
eclipsetomcat插件:http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV33.zip
解压tomcatPluginV33.zip,将解压后的文件放到eclipse/plugins内,重启eclipse,可看见tomcat图标,在window/perference下,
选择tomcat,tomcatversion里选择version6.x,tomcathome中选择tomcat的安装目录。按tomcat启动图标,
在浏览器里输入http://localhost:8080/,可以看见官网。说明已经成功了。
第三步:下载axis2,
http://apache.etoak.com//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip
http://apache.etoak.com//axis/axis2/java/core/1.6.2/axis2-1.6.2-war.zip
将axis2-1.6.2-bin.zip解压到电脑中的任意目录,
将axis2-1.6.2-war.zip解压后,放到tomcat的webapps目录下,重启tomcat,会发现webapps目录下多了axis2文件夹,
在浏览器里输入http://localhost:8080/axis2,会发现对应的网页,说明已经成功了。
在eclipse中进行配置,会出现Axis2runtimeloadedsuccessfully,
说明加载成功了。再下载两个插件:http://apache.etoak.com/axis/axis2/java/core/1.6.2/axis2-eclipse-codegen-plugin-1.6.2.zip
http://mirror.bit.edu.cn/apache/axis/axis2/java/core/1.6.2/axis2-eclipse-service-plugin-1.6.2.zip
解压后都放到eclipse的plugins目录下,在eclipse中,file-->new.-->others..里面会出现axis2wizards
这样,axis2配置完成了,可以进行webservice开发了。。。
一、建立要发布的WebService
1.1解压所下载的axis2-1.6.0-bin.zip,在Eclipse中的Windows\Preferences下new一个UserLibraries,命名为axis2,将解压后文件夹中axis2-1.6.0\lib下的包均添加进来。这一步操作的目的是为了以后工程方便添加axis2所需的jar文件。
1.2建立一个JavaProject,命名为sayHello,将axis2用户库加入到buildpath中
1.3现在开始编写要发布的WebService,在src包中建包Hi,建立Hello类如下:
Java代码
[code="java"]packageHi;
publicclassHello{
publicStringsayHello(Stringuser){
return"Hello,"+user;}
}
此时sayHello工程结构如下:
二、发布WebService
2.1编译刚刚建立的Hello类,类编译后,会在workspace中对应工程目录下的bin文件夹下生成Hello.class文件
2.2打包要发布的Service,点击Eclipse中New——>File——>Other——>Axis2wizards——>Axis2ServicesArchiver,按照向导选择刚建立的类编译后的class文件。
注意点:
1、在我的工程中,workspace是E:\J2EE,选择class目录,本工程中classHello是带包Hi的,因此我们不能选成E:\J2EE\sayHello\bin\Hi,而应该选择E:\J2EE\WSTest\bin,如图所示:
2、next后,默认选择SkipWSDL
3、继续next,这两步默认,什么都不选
4、设定服务名称和所使用的类名,点击Load如下所示:
注意Classname请务必设为Hi.Hello,代表使用的类是E:\J2EE\sayHello\bin路径下,文件夹Hi下的Hello类,否则Load不上的。
5设置输出路径为:\webapps\axis2\WEB-INF\services
6点击Finish完成发布。
三、测试所发布的WebService
打开http://localhost:8080/axis2/services/listServices页面,可以看到sayHello服务:
点击进到sayHello的wsdl页面:http://localhost:8080/axis2/services/sayHello?wsdl,表明服务部署正确。
四、编写客户端代码调用WebService
本文例子与其他例子最大的不同就在这里,其他例子一般需要根据刚才的服务wsdl生成客户端stub,然后通过stub来调用服务,这种方式显得比较单一,客户端必须需要stub存根才能够访问服务,很不方面。本例子的客户端不采用stub方式,而是一种实现通用的调用方式,不需要任何客户端存根即可访问服务。只需要指定对于的webservce地址、操作名、参数和函数返回类型即可。工程结构如下:
[code="java"]packageHi;
importjavax.xml.namespace.QName;
importorg.apache.axis2.AxisFault;
importorg.apache.axis2.addressing.EndpointReference;
importorg.apache.axis2.client.Options;
importorg.apache.axis2.rpc.client.RPCServiceClient;
publicclassMyClient{
privateRPCServiceClientserviceClient;
privateOptionsoptions;
privateEndpointReferencetargetEPR;
publicMyClient(StringendPoint)throwsAxisFault{
//使用RPC方式调用webService
serviceClient=newRPCServiceClient();
//
options=serviceClient.getOptions();
//制定调用webservice的URL
targetEPR=newEndpointReference(endPoint);
//
options.setTo(targetEPR);
}
publicObject[]invokeOP(StringtargetNameSpace,StringopName,
Object[]opArgs,Class>[]opReturnType)throwsAxisFault,ClassNotFoundException{
//制定要调用的example方法和wsdl文件的命名空间
QNameopQName=newQName(targetNameSpace,opName);
//指定example方法并输出该方法的返回值
//参数:调用的方法名,调用的参数名,调用方法的返回类型
returnserviceClient.invokeBlocking(opQName,opArgs,opReturnType);
}
publicstaticvoidmain(Stringargs[])throwsAxisFault,ClassNotFoundException{
finalStringendPointReference="http://localhost:8080/axis2/services/sayHello";
finalStringtargetNameSpace="http://Hi";
MyClientclient=newMyClient(endPointReference);
StringopName="sayHello";
//指定example方法的参数值
Object[]opArgs=newObject[]{"MyFriends"};
//指定example方法返回数据值的数据类型的Class对象
Class>[]opReturnType=newClass[]{String[].class};
Object[]response=client.invokeOP(targetNameSpace,opName,opArgs,opReturnType);
System.out.println("result--->"+((String[])response[0])[0]);
}
}
运行该程序,点击RunAs->Javaapplication,可以看到控制台端口的输出是:result--->Hello,MyFriends,表明客户端调用成功。
转载自http://hi.baidu.com/lxmxuelong/item/875464aa3ff11703a9cfb73f