WebService Axis 快速开发
WebService Axis 快速开发
一、开发环境
?Myeclipse8.0
?Tomcat6.0
?Axis1.4
?Jdk1.6
Axis下载:
Google:”Axis”,很容易找到Apache Axis的链接地址:http://ws.apache.org/axis/,下载最新的1.4Final。
(好了准备工作做好了,现在我们来开发WebService!)
二、用Java 开发 WebService Axis简单实例
Axis支持三种WebService 的部署和开发,分别为:
1、Dynamic Invocation Interface(DII)方式
2、Dynamic Proxy方式
3、Stubs方式
Stubs方式是最通用的做法,又因其灵活的特点,所以我建议使用这种方式。下面,我主要讲述这种方式的开发。
1)创建Web工程
1、在Myeclipse上创建web工程,名为Test;
2、将jar包拷贝到WEB-INF/lib目录下;
2)编写wsdd发布web服务
1、在src目录下创建服务端程序HelloDateServer.java,包名为:
src/mypackage.server/HelloDateServer.java
package mypackage.server;import java.util.Date;//WebService服务端类public class HelloDateServer { /** * 服务方法 * @param yourName * @return */ public String helloDate(String yourName){ String rtStr = "Hello ,"+yourName+" ,it's: " + new Date(); return rtStr; } //Add method here......}
WEB-INF/web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- =============== Axis Webservice =============--><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><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> </web-app>
变量名:AXIS_LIB变量值:C:\axis-1_4\lib[color=red](我是直接将下载下来的包解压到C盘)[/color]将以下变量值加入CLASSPATH%AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;
<deployment xmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><!-- 这里的stubs为wsdd描述符中的ServiceNamespace --><service name="stubs" provider="java:RPC"><!-- 这里的ClassName就是我的服务类了,这个服务主要功能就是传递一个自定义的对象 --><parameter name="className" alue="mypackage.server.HelloDateServer " /><!-- 这里描术的意思是,此服务类中的方法全部享出来. value值为*号如果你只想让你的客户端只能调用其中一个方法时,value值改为方法名就可以了. --><parameter name="allowedMethods" value="*" /></service></deployment>
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.Processing file deploy.wsdd<Admin>Done processing</Admin>
java org.apache.axis.wsdl.WSDL2Java –o ./ -p mypackage.client stubs.wsdl解释一下此命令:
java org.apache.axis.wsdl.WSDL2Java –o %Output_Path% -p %Package% stubs.wsdl
src/mypackage/StubsClient.javapackage mypackage.client;import java.net.URL;public class StubsClient {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub// 定义的service和stubHelloDateServerService service = null;HelloDateServer stub = null;try {System.out.println("connect......");String StrPortAddress = "http://localhost:8080/Test/services/stubs";URL portAddress = new URL(StrPortAddress);// 得到客户端服务service = new HelloDateServerServiceLocator();// 得到客户端stubstub = service.getstubs(portAddress);// 测试服务方法String resultStr = stub.helloDate("Google");System.out.println(resultStr);} catch (Exception e) {e.printStackTrace();} finally {System.out.println("End.");}}}