您的位置:首页 > 其它

Axis实现 web service接口开发 + 客户端调用

2016-05-28 15:49 573 查看
看到网上挺多人找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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  services 初学者 axis