AXIS學習(1)(轉)
到http://ws.apache.org/下載axis后,解壓,拷貝axis到tomcat的webapps目錄下。啟動tomcat,運行http://localhost:8080/axis
點擊“validation”,程序會檢測少的包,并提示下載路徑。我目前包含的包如下:
axis.jar;
axis-ant.jar;
axis-schema.jar;
commons-discovery-0.2.jar;
commons-httpclient-3.0-rc2.jar;
commons-logging-1.0.4.jar;
jaxrpc.jar;
log4j-1.2.8.jar;
saaj.jar;
wsdl4j-1.5.1.jar;
activation.jar;
mail.jar
2.環境變量的配置
其實運行axis是不用配置環境變量的。但有的時候需要利用axis提供的一些工具,產生一些文件,需要應用很多包,利用ClassPath就比較方便了。
AXIS_HOME:
AXIS_LIB:
AXISCLASSPATH:
3.把axis集成 到項目中
a、把上面所提到的包拷貝到項目相應的lib目錄中
b、修改web.xml文件,增加所需的servlet配置
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet>
<servlet-name>SOAPMonitorService</servlet-name>
<servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>
<init-param>
<param-name>SOAPMonitorPort</param-name>
<param-value>5001</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SOAPMonitorService</servlet-name>
<url-pattern>/SOAPMonitor</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
4.服務發布(jws文件發布和定制發布)
a、jws文件發布
在web應用程序目錄下,新建一個jws文件,例如:Hello.jws文件(其實就是個java文件,不包含包名)。
public class Hello {
public String hello(String name){
if(name==null){
name="";
}
return "Hi,你好 "+name+",歡迎來到Web服務世界!";
}
}
這樣就可以直接查看hello服務相應的wsdl了:http://localhost:8080/testaxis/hello.jws?wsdl
b.定制發布。
定制發布,依賴一個server-confif.wsdd文件。
在web-inf目錄下新建一個deploy.wsdd文件,設置發布的服務,例如:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="city" provider="java:RPC">
<parameter name="className" value="yhp.test.axis.service.CityService"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
利用axis提供的工具,就可以生成server-confif.wsdd文件了:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
在運行過程中發現:如果沒有把axis自帶的應用發布到服務器上,運行時會提示404的錯誤,未發現axis/servlet/AxisServlet。
5.客戶端調用
String endpoint = "http://localhost:" + "8080"
+ "/testaxis/services/city"; //以定制發布方式,如果是jws文件,則endpoint為相應的jws文件
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("getZip");
String res = (String) call.invoke(new Object[] {""});//object數組為遠程方法的參數
System.out.println(res);
6.生成客戶端stub相關類
Axis提供了工具生成客戶端stub相關的類,即通過wsdl產生stub。
java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/testaxis/services/city?wsdl
posted on 2006-05-23 17:05 liaojiyong 閱讀(330) 評論(0) 編輯 收藏 所屬分類: Mixture