一、前期准备
1、软件
准备resinAxis14,其中webapps下要有axis文件夹
axis内容:用于生成WSDL文件和通过WSDL生成JAVA也可以放在其他地方
WSDL命令:
将axis文件夹,复制到G:\Server\resinAxis14\deploy中,启动resin:
点击list可以查看所有接口
为了使AXIS指向本地工程,修改resin.conf:
<resin:if test="${java.isJava5()}">
<!--
- Administration application /resin-admin
-
- password is the md5 hash of the password.
- localhost is true to limit access to the localhost
-->
<resin:set var="resin_admin_password" default=""/>
<resin:set var="resin_admin_localhost" default="true"/>
<web-app id="/resin-admin" document-directory="${resin.home}/php/admin"/>
<web-app id="/axis14" document-directory="G:/workspace/TestAxis14/WebRoot/"/>
</resin:if>
将axis文件夹中内容,复制到web-inf对应目录中(类似于:index.jsp,fingerprint.jsp可以不复制。这些用来显示如上图的AXIS页面)
二、写接口类(用于生产WSDL)
写一个接口类,没有package(只需要写出方法,不用写方法的具体实现,不能再其中写main方法)
将CLASS文件放到axis14文件夹中,此文件夹放置了java2wsdl和wsdl2java命令
三、生成WSDL文件和客户端与服务端的JAVA文件
修改java2wsdl:
set Axis_Lib=G:\Server\resinAxis14\webapps\axis\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
%Java_Cmd% org.apache.axis.wsdl.Java2WSDL -o TestAxis14.wsdl -l "http://localhost:9090/axis/services/TestAxis14"
TestAxis14
在cmd中,执行java2wsdl,结果如下:(需要保证AXIS服务可用)
axis14文件夹中生成文件:TestAxis14.wsdl
修改wsdl2java:
set Axis_Lib=G:\Server\resinAxis14\webapps\axis\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=G:\axis14\axis14src\
set Package=com.zhongying.testaxis14.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% TestAxis14.wsdl
执行wsdl2java生成客户端程序
修改输出路径:set Package=com.zhongying.testaxis14.service
修改最后一句:%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -s -o %Output_Path% -p %Package% TestAxis14.wsdl
-s代表生成服务端程序
执行wsdl2java生成服务端程序
将得到的JAVA文件放到工程中
四、修改配置文件
修改G:\workspace\TestAxis14\WebRoot\WEB-INF\server-config.wsdd
增加:
<service name="TestAxis14" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.zhongying.testaxis14.service.TestAxis14SoapBindingImpl"/>
</service>
访问:http://localhost:9090/axis14/services/TestAxis14?wsdl 可以显示WSDL内容:
五、测试服务
1、写具体实现业务的类:
package com.zhongying.testaxis14.service;
public class TestAxisModel {
public String getAxisNameAndId(String name,String id){
System.out.println("getAxisNameAndId name is "+name+" id is "+id);
return "getAxisNameAndId IS END :"+name+"-"+id;
}
public String getAxisId(String id){
System.out.println("getAxisId id is "+id);
return "getAxisId IS END :"+id+" is getAxisId ok";
}
public static void main(String[] args){
System.out.println("getAxisNameAndId id is ");
}
}
修改服务端的实现类:
package com.zhongying.testaxis14.service;
public class TestAxis14SoapBindingImpl implements com.zhongying.testaxis14.service.TestAxis14_PortType{
public java.lang.String getAxisNameAndId(java.lang.String name, java.lang.String id) throws java.rmi.RemoteException {
TestAxisModel m = new TestAxisModel();
return m.getAxisNameAndId(name, id);
}
public java.lang.String getAxisId(java.lang.String id) throws java.rmi.RemoteException {
TestAxisModel m = new TestAxisModel();
return m.getAxisId( id);
}
}
新增客户端的测试类:
package com.zhongying.testaxis14.client;
public class TestTestAxis {
public static void main(String args[]){
TestAxis14SoapBindingStub stub;
try {
javax.xml.rpc.Service service=new TestAxis14ServiceLocator();
java.net.URL url=new java.net.URL("http://localhost:9090/axis14/services/TestAxis14?wsdl");
stub = new TestAxis14SoapBindingStub(url,service);
String returnMsg1=stub.getAxisId("gx");
System.out.println("returnMsg1 "+returnMsg1);
returnMsg1=stub.getAxisNameAndId("gx"," id ");
System.out.println("returnMsg1 "+returnMsg1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在ECLIPSE中执行此类,可以测试WEBSERVICE
执行结果:
returnMsg1 getAxisId IS END :gx is getAxisId ok
returnMsg1 getAxisNameAndId IS END :gx- id
服务端的resin日志:
getAxisId id is gx
getAxisNameAndId name is gx id is id
转自:http://user.qzone.qq.com/38873502#!app=2&via=QZ.HashRefresh&pos=1320584525