axis生成webservice方法(转载)
一、前期准备 1、软件 准备resinAxis14,其中webapps下要有axis文件夹 ? axis内容:用于生成WSDL文件和通过WSDL生成JAVA也可以放在其他地方 ? ? WSDL命令: ? 将axis文件夹,复制到G:ServerresinAxis14deploy中,启动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:ServerresinAxis14webappsaxisWEB-INFlib 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:ServerresinAxis14webappsaxisWEB-INFlib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=G:axis14axis14src 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:workspaceTestAxis14WebRootWEB-INFserver-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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |