用wsdd(服務部署描述語言),主要是編寫java文件和編寫wsdd文件。1。編寫java文件,最好是定義在某一個包下,否則便以后直接放到\WEB-INF\classes下,有時會出錯,原因是在用deploy.wsdd部署時映射不對。然后直接包對應的包放到\WEB-INF\classes中。HelloWorldG.java文件: package test.gaolong;public class HelloWorldG{ public String sayHelloG(String name){ return "HelloG "+name; } }2。編寫wsdd文件,根據wsdd文件的規范編寫相關文檔。例如:(deploy.wsdd) <deployment xmlns=" <parameter name="className" value="test.gaolong.HelloWorldG"/><--對應的主類---> <parameter name="allowedMethods" value="*"/><---注冊相應的方法,如果只有一個方法,可以直接注冊方法名---> <parameter name="allowedRoles" value="user"/><--定義用戶認證---> <requestFlow><-用戶認證的描述文件--> <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> </requestFlow> </service></deployment>3。部署wsdd文件:打開命令口,切換到deploy.wsdd目錄下,運行java org.apache.axis.client.AdminClient即可完成部署。 這兒可能出錯,正確的顯示:D:\bea\user_projects\domains\mydomain\applications\axis\WEB-INF\classes>java org.apache.axis.client.AdminClient -p 7001 deploy.wsddProcessing file deploy.wsdd<Admin>Done processing</Admin> 當在wsdl中使用deploy.wsdd來部署時,對于服務器是要打開的,而且當服務器的端口不是8080時,采用要求java org.apache.axis.client.AdminClient -p <port> deploy.wsdd 來指定并進行服務部署。4。打開server-config.wsdd會發現增加了語句描述:<service name="HelloWorldG" provider="java:RPC"> <requestFlow> <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> </requestFlow> <parameter name="allowedRoles" value="user"/> <parameter name="allowedMethods" value="*"/> <parameter name="className" value="test.gaolong.HelloWorldG"/> </service>其實直接到該文件中增加該內容,不必用org.apache.axis.client.AdminClient來部署描述。打開IE,可以在http://127.0.0.1:7001/axis/servlet/AxisServlet看到該服務部署到服務列表上。5。編寫測試application客戶端,其代碼如下:import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import javax.xml.namespace.QName;
public class ServiceClient{ public static void main(String[] args) throws Exception{ String endpoint=" String name="gaong1"; Service service=new Service(); Call call=(Call) service.createCall();//回調服務 call.setUsername("gaolong1"); call.setPassword("8001");//用戶認證 call.setTargetEndpointAddress(new java.net.URL(endpoint)); // call.setOperationName("sayHelloG"); call.setOperationName(new QName(" call.addParameter("name",XMLType.XSD_STRING,ParameterMode.IN); call.setReturnType(XMLType.XSD_STRING);//XMLType.XSD_STRING); String ret=(String)call.invoke(new Object[] {name}); System.out.println(ret); }} 運行之后有關的顯示。6。通過tcpmonitor來監聽的soap消息如下:請求soap:<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="<soapenv:Body> <ns1:sayHelloG soapenv:encodingStyle=" </ns1:sayHelloG></soapenv:Body></soapenv:Envelope>回應soap:<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="<soapenv:Body> <ns1:sayHelloGResponse soapenv:encodingStyle=" posted on 2007-08-06 22:43 菠蘿 閱讀(290) 評論(0) 編輯 收藏 所屬分類: AXIS
Powered by: BlogJava Copyright © 菠蘿