IDE:eclipse
JDK:
ANT:1.7
AXIS:1.4
手工配置web services应用1、 下载apache axis包,最新为axis1.4
2、 使用eclipse新建一个web project,这里叫servicesServer
3、 将axis-bin-1_4\axis-1_4\lib下jar包拷贝到项目/web-inf/lib下
4、 将在web.xml中增加如下内容:(可以使用axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF下的web.xml)
5、 在web-inf下创建文件server-config.wsdd,内容为axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF下server-config.wsdd。
6、 在项目src下增加com.ruangq.services.TestServices.java类:代码如下:
package com.ruangq.services;
/**
*----------------------------------
* @author xiaoquan
* @publish 下午03:30:20
*----------------------------------
*/
public class TestServices {
public static String getResponse(String param,String param2){
return "in testService param is "+param+" and "+param2;
}
}
7、 在server-config.wsdd中增加一个service:
<service name="TestServices" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.ruangq.services.TestServices"/>
</service>
8、 到此,服务器端的web services部署已经完成,下面开始客户端调用程序的编写。
9、 调用程序其实只需一个java方法。
10、 新建一个项目(什么都可以,实际上我们只是需要一个java文件而已,甚至可以再命令行中直接调用)servicesclient。
11、 在src下建立一个java文件:com.ruangq.wservices.TestServices.java,内容如下:
/**
*
*/
package com.ruangq.wservices;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
/**
*----------------------------------
* @author xiaoquan
* @publish 上午10:45:48
*----------------------------------
*/
public class TestServices {
public String callServices(){
String endPointURL = "http://localhost:8080/servicesServer/services/TestServices";
//1、新建Service
Service service = new Service();
try {
//2、产生调用对象
Call call = (Call) service.createCall();
//3、设置调用路径
call.setTargetEndpointAddress(new URL(endPointURL));
//4、设置调用的方法,这里的Qname没有实际意义,只是一个名字空间表示而已
call.setOperationName(new QName("http://example3.userguide.samples", "getResponse"));
//增加所需参数
call.addParameter("param1", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("param2", XMLType.XSD_STRING, ParameterMode.IN);
//设置返回值类型
call.setReturnType(XMLType.XSD_STRING);
//调用返回
String ret = (String)call.invoke(new Object[] { "sssssssss","aaaaaaaaaaa" });
System.out.println("You typed : " + ret);
} catch (ServiceException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
return "";
}
public static void main(String [] args){
TestServices tester = new TestServices();
tester.callServices();
}
}
12、 到这里,在tomcat中部署servicesServer项目,启动tomcat,在servicesClent项目中运行TestServices.java就可以在控制台中看到结果。
Web services请求处理流程:客户端发出web services调用-------AxisServlet过滤路径为/services/*的请求----截取*到server-config中找与该名称对应的<service></service>-----找到后,根据<service>中className中设置的服务类调用请求中请求的方法,执行方法获得返回值----响应客户端返回结果,-------客户端处理返回结果