用axis实现webservice的基础知识
A.如何获得 WSDL 文件
Web Service 的 WSDL 文件可用于任何可到达 Web Service 的 URL 的潜在客户端。从 WebLogic Server 获取 Web Service 的 WSDL 文件:
?B.用deploy.wsdd生成server-config.WSDD文件 在%TOMCAT_HOME%/webapps/axis/WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件 deploy.wsdd <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="HelloWorld" provider="java:RPC"> <parameter name="className" value="HelloWorld"/> <parameter name="allowedMethods" value="sayHello"/> </service> </deployment> 在%TOMCAT_HOME%/webapps/axis/WEB-INF目录下执行下列语句 java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd 要注意的是 -Djava.ext.dirs=lib这个参数,这个参数可以使你编译过程中动态调用axis.jar包。而不需要事先在系统变量里配置axis.jar包的路径。另外,-lhttp://之后只有axis这个字符串可以根据项目名称的不同而修改,其他的都是必然写法。 C.用wsdl文件生成客户端的java文件? 在%TOMCAT_HOME%/webapps/axis/WEB-INF目录下执行下列语句? java -Djava.ext.dirs=./web/WEB-INF/lib org.apache.axis.wsdl.WSDL2Java http://localhost:5888/szcg/services/businessService?wsdl -t 总结,server-config.wsdd文件得靠自己写(暂时这么认为,不知道有没有工具可以根据服务端java类自动产生,自己也可以写一个)下面为客户端代码解释: String endpoint = "http://172.31.0.42:8888/test/services/testService?wsdl"; ???Service service = new Service(); ???Call call call = (Call) service.createCall(); ?? QName qn = new QName("process"); ???QName qx = new QName("urn:BeanService","CommonResult"); ??? ???call.setOperationName(qn);//设置你要调用的远程方法名 ???call.registerTypeMapping(CommonResult.class,qx,?????new BeanSerializerFactory(CommonResult.class,qx),?????new BeanDeserializerFactory(CommonResult.class,qx));//序列化和反序列化传回的参数,如无自定义的类可不设置这个参数 ?????call.setTargetEndpointAddress(new java.net.URL(endpoint));//设置要调用远程方法的类,类可在server-config.wsdd配置文件里找到,???call.setUseSOAPAction(true); ???String params = "<?xml version='1.0' encoding='UTF-8'?><request><function name='feedback'/><params><xmbh>a</xmbh><qsdw>b</qsdw><sgyj>c</sgyj><txsj>2008-07-03 17:35:00</txsj><txr>d</txr></params></request>";//用xml写成传入参数,这样可以简化参数个数,参数可任意增加和减少 ??? ??? CommonResult obj1=(CommonResult) call.invoke(new Object[] { params }); server-config.wsdd配置文件是axis.jar文件中会自动调用. 测试axis服务器是否设置好可以在浏览器里输入http://172.31.0.42:8888/test/services/testService?wsdl,无错误则表示wsdd配置文件无误. 如在项目中加入webservic刚要在web.xml文件里加入 <servlet> ??<servlet-name>AxisServlet</servlet-name> ??<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> ??<load-on-startup>5</load-on-startup> ? </servlet><servlet-mapping> ??<servlet-name>AxisServlet</servlet-name> ??<url-pattern>/services/*</url-pattern> ? </servlet-mapping> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |