axis网上的教程很多,不过搜来搜去,总是只有那么几篇。仔细看了一下那几篇文章,都感觉到不是自己想要的,所以自己整理了一篇分享一下。

本文介绍axis应用的一个小例子,没有麻烦的命令行操作,只需照下面的步骤做就可以了。以下是详细的操作步骤。(注:本实例用的是axis,非axis2)

  1. 1.       环境准备

l  MyEclipse 6.5

l  Tomcat 6

l  JDK 1.5

l  axis(非axis2)

  1. 2.       新建web工程

新建一web工程,工程名称为axistest。新建完成后,导入下图所示的axis相关的jar包。

  1. 3.       在web.xml中添加axis相关的配置信息
  1. <servlet>
  2. <display-name>Apache-Axis Servlet</display-name>
  3. <servlet-name>AxisServlet</servlet-name>
  4. <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  5. </servlet>
  6. <servlet>
  7. <display-name>Axis Admin Servlet</display-name>
  8. <servlet-name>AdminServlet</servlet-name>
  9. <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
  10. <load-on-startup>100</load-on-startup>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>AxisServlet</servlet-name>
  14. <url-pattern>/servlet/AxisServlet</url-pattern>
  15. </servlet-mapping>
  16. <servlet-mapping>
  17. <servlet-name>AxisServlet</servlet-name>
  18. <url-pattern>*.jws</url-pattern>
  19. </servlet-mapping>
  20. <servlet-mapping>
  21. <servlet-name>AxisServlet</servlet-name>
  22. <url-pattern>/services/*</url-pattern>
  23. </servlet-mapping>
  24. <servlet-mapping>
  25. <servlet-name>AdminServlet</servlet-name>
  26. <url-pattern>/servlet/AdminServlet</url-pattern>
  27. </servlet-mapping>
  1. 4.       新建提供服务的Java

在src下新建com包,在com包下新建HelloWorld类,HelloWorld的内容如下:

  1. package com;
  2. public class HelloWorld {
  3. public String sayHello(String msg){
  4. if(null==msg || "".equals(msg)){
  5. return "您好!";
  6. }else{
  7. return "您好" + msg + "!";
  8. }
  9. }
  10. public int sayAge(){
  11. return 28;
  12. }
  13. }
  1. 5.       配置server-config.wsdd

在WEB-INF下新建server-config.wsdd文件,内容如下:

  1. <deployment xmlns="http://xml.apache.org/axis/wsdd/"
  2. xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  3. <!-- 处理器 -->
  4. <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />
  5. <!-- 一个服务 -->
  6. <!-- provider="java:RPC"  webservice是以javabean的形式提供的-->
  7. <service name="helloWorldService" provider="java:RPC">
  8. <!-- 指定类名 -->
  9. <parameter name="className" value="com.HelloWorld" />
  10. <!-- 类中允许访问的方法 -->
  11. <parameter name="allowedMethod" value="*"></parameter>
  12. </service>
  13. <!-- 指定处理器 -->
  14. <transport name="http">
  15. <requestFlow>
  16. <handler type="URLMapper"/><!-- 引用上边的 -->
  17. </requestFlow>
  18. </transport>
  19. </deployment>

wsdd文件标签节点说明:

deployment:表明这是一个axis部署描述文件;

service:axis提供的一个web service服务。service标签中parameter allowedMethod用于指定一个以空格分隔的方法名,只有这些方法可以通过web service访问。也可以将这个值指定为“*”表示所有的方法都可以访问。

provider:服务类型,共有四种,分别是RPC,Document,Wrapped和Message。详见org.apache.axis.providers包的API文档;

parameter:用来设置Axis的各种属性;

requestFlow:局的请求Handlers,在调用实际的服务之前调用;

transport:定义了服务器端的传输方式

至此web service相关的东西已经配置好,此时工程的目录结构如下

  1. 6.       部署到Tomcat测试

将工程发布到Tomcat,在浏览器里访问http://127.0.0.1:9999/axistest/services,如果出现如下页面,则表示web service部署成功

点击上面的wsdl链接,进入下图所示页面

注意上面的红圈的namespace,下面测试QName有用到。

  1. 7.       客户端测试

在com包下新建测试类,名称为ClientTest,内容如下:

  1. package com;
  2. import java.NET.MalformedURLException;
  3. import java.rmi.RemoteException;
  4. import javax.xml.namespace.QName;
  5. import javax.xml.rpc.ServiceException;
  6. import org.apache.axis.client.Call;
  7. import org.apache.axis.client.Service;
  8. /**
  9. * @author 花非花雾非雾
  10. * @date 2010-12-24
  11. */
  12. public class ClientTest {
  13. public static void main(String[] args) throws MalformedURLException, RemoteException {
  14. Service service = new Service();
  15. try {
  16. Call call = (Call) service.createCall();
  17. //设置地址
  18. call.setTargetEndpointAddress(new java.Net.URL("http://127.0.0.1:9999/axistest/services/helloWorldService?wsdl"));
  19. //设置要执行的方法
  20. call.setOperationName(new QName("http://com","sayHello"));
  21. //设置要传入参数,如果没有要传入的参数,则不要写这个
  22. call.addParameter("msg", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
  23. //设置返回的类型
  24. call.setReturnType(org.apache.axis.Constants.XSD_STRING);
  25. String name = "花非花雾非雾";
  26. //执行,调用webservice
  27. String result = (String) call.invoke(new Object[]{name});
  28. System.out.println("返回的结果是:"+result);
  29. } catch (ServiceException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33. }

如果一切正常,运行结果如下:

返回的结果是:您好花非花雾非雾!

参考资料:

  1. axis 的官方资料

最新文章

  1. Spring2.0-applicationContext.xml中使用el表达式给实体类属性赋值被当成字符串-遁地龙卷风
  2. 即使用ADO.NET,也要轻量级实体映射,比Dapper和Ormlite均快
  3. excel日期格式转换为文本格式
  4. [转]浅谈jQuery EasyUI的属性设置
  5. 使用MVVM框架(avalonJS)进行快速开发
  6. Dubbo初探
  7. hdu 5862 Counting Intersections
  8. hdu5792--World is Exploding
  9. 将excel里面的数据导入到程序里面
  10. Hbase写数据,存数据,读数据的详细过程
  11. Unity3D音频播放器 动态装载组件
  12. IOS的控制器
  13. F12调试模式下使用console自动提交
  14. robotframework的学习笔记(十四)------学习Robot Framework必须掌握的库—-BuiltIn库
  15. iOS应用架构开篇
  16. 小米 OJ 编程比赛 01 月常规赛_灯_找规律
  17. 正则简单操作cookie、url search
  18. Selenium WebDriver中鼠标事件
  19. springboot 读取 resource文件
  20. html5游戏开发-简单tiger机

热门文章

  1. 【Tomcat】tomcat logs 目录下各日志文件的含义
  2. Linux下汇编语言学习笔记23 ---
  3. 基于端口的信息探测-portscan-1.0
  4. ZOJ - 3829 Known Notation(模拟+贪心)
  5. spring面试相关点
  6. Ubuntu 16.04 GNOME添加桌面图标/在桌面上显示图标
  7. 苹果装WIN 7
  8. Android AsyncTask 分析内部实现
  9. keepalived + lvs marster 与 backup 之间的 高可用
  10. [Android Studio] 取消引用库打包出现异常-- provided dependencies can only be jars