看到网上挺多人找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
时间: 2024-12-09 07:20:58