看到网上挺多人找webservice axis开发案例,但是网上较多的都是有点乱,初学者不太容易看得懂,所以最近看到自己终于有了点空闲时间,就上传了一份比较简单的webservice axis的完整案例。
只适用于初学者。
一、新建一个web项目
导入lib包。
2.配置 web.xml
<!-- axis 配置 --> <servlet> <display-name>Apache-Axis Servlet</display-name> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
3.然后在项目中的src下创建包,再在包下创建一个类,用来提供web service接口。
package com;
public class HelloWorld {
public String sayHello(String msg){
if(null==msg || "".equals(msg)){
return "您好!";
}else{
return "您好" + msg + "!";
}
}
public int sayAge(){
return 28;
}
}4.配置 server-config.wsdd文件。
<!-- deployment 表明这是一个axis部署描述文件 --> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <!-- axis提供的一个web service服务。service标签中parameter allowedMethod用于指定一个以空格分隔的方法名, 只有这些方法可以通过web service访问。也可以将这个值指定为“*”表示所有的方法都可以访问。--> <service name="axisEm" provider="java:RPC"> <!-- 指定类名 --> <parameter name="className" value="com.HelloWorld" /> <!-- 类中允许访问的方法 --> <parameter name="allowedMethod" value="*"></parameter> <!-- 命名空间 --> <namespace>http://xml.apache.org/axis/wsdd/</namespace> <parameter name="scope" value="Application"/> </service> <!-- 服务器端的传输方式. 指定处理器 --> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <transport name="http"> <requestFlow> <handler type="java:org.apache.axis.handlers.http.URLMapper"/><!-- 引用上边的 --> </requestFlow> </transport> </deployment>
5.运行该项目,访问http://localhost:8080/axisTest/services/axisEm?wsdl,
如果报错,则返回项目检测配置是否有问题等,成功则会得到wsdl文档。
二、客户端调用
package com.test;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class webTest {
public static void main(String[] args) {
String _newendPoint =
"http://localhost:8080/axisTest/services/helloWorldService?wsdl";
String _newNameSpace = "http://xml.apache.org/axis/wsdd/";
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(_newendPoint));
call.setOperationName(new QName(_newNameSpace, "sayHello"));
String s = (String) call.invoke(new Object[] { "st001" });
System.out.println(s);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}案例下载地址:http://down.51cto.com/data/2220274
本文出自 “海阔_星空” 博客,请务必保留此出处http://7852586.blog.51cto.com/7842586/1784070
Axis实现 web service接口开发 + 客户端调用
原文:http://7852586.blog.51cto.com/7842586/1784070