1,axis2安装(windows)
  . 环境需求:jdk 1.5, tomcat 6, maven 2, ant

. 下载(bin表示二进制文件):http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip

   解压到d:/softInstall/axis2/

. 设置环境变量:AXIS2_HOME=d:/softInstall/axis2/ 

   在path下面添加:AXIS2_HOME/bin;

. 安装axis2的测试项目,我是这么认为,即得到axis2.war,在$AXIS2_HOME/webapps下面有一个build.xml。

   所以cmd进到 $AXIS2_HOME/webapps 目录下,输入:ant create.war,会在 $AXIS2_HOME/dist下生成:axis2.war

将axis2.war入到tomcat/webapps下面,启动tomcat,再访问 http://localhost:8080/axis2 说明成功了。

 2,建立第一个webservics.

. 无配置的webservice (用于第一次建立ws,最快时间内看到效果)

建立一个HelloWord.java,内容如下:

?
1
2
3
4
5
6
7
8
9
10
//package xm.ws
public
class
HelloWord{
    
public
String getMessage(){
        
return
"this is my first aixi2 web services"
;
    
}
  
    
public
void
setMessage(String msg){
        
System.out.println(
"message content:"
+msg);
    
}
}

编译,得到HelloWord.class

放入:tomcat下面的axis2/WEB-INF/services/pojo目录中,如果没有pojo目录,则自己建立个,但是这样的java是不能有包的。
   输入:http://localhost:8080/Axis2Test/services/listServices 在下面就会发现一个HelloWord的service,

一般不建议使用上面的方法。

. 自己定义的web service

. 把上面的方法package申明取消,得到HelloWord.class文件

. 建立如下目录树:
   d:/xmws
       |- META-INF
             |- services
                    |- xm
                    |- ws

. 建立包级文件夹,如上面的包是:xm.ws,则把HelloWord.class复制到services下面的ws下。

. 在META-INF下面建立:services.xml内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <serviceGroup>
  3. <service name="helloword">
  4. <description>这是第一个axis2的web service服务</description>
  5. <parameter name="ServiceClass">xm.ws.HelloWord</parameter>
  6. <messageReceivers>
  7. <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
  8. class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
  9. <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
  10. class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
  11. </messageReceivers>
  12. </service>
  13.  
  14. <!--其它webservice服务
  15. <service name="other">
  16. </service>
  17. -->
  18. </serviceGroup>

. services.xml说明:

<serviceGroup>: 可以发布多个 webService,如果只有一个webservice,刚可以取消<serviceGroup>节点。<service>作为根节点,

<service>: 用于发布 Web Service,一个 <service>元素只能发布一个 WebService类, name属性表示 WebService名,
   例子中:name="helloword",即通过:http://localhost:8080/axis2/helloword?wsdl 访问到该服务,
   如果要访问方法则:?getMessage方法名

<description>: 元素表示当前 Web Service的描述,

<parameters>: name属性:随便但是必须的,不能少;内容:是指定类名,具体到包

<messageReceivers>:该元素用于设置处理 WebService方法的处理器。可能不用需要指定到具体的方法,系统自动调用你请求的方法
   例如:
   getMessage()方法有一个返回值,因此,需要使用可处理输入输出的 RPCMessageReceiver类,
   而setMessage()方法没有返回值,因此,需要使用只能处理输入的 RPCInOnlyMessageReceiver类。

. 打包web service 成 .aar
   cmd命令窗口进入到:d:/xmws 目录下面。输入: jar cvf ws.aar . (注意后的后面还有个 ".")。
   就会在d:/ws下面看到 ws.aar 这个文件,把这个文件复制到tomcat下面的axis2/WEB-INF/services下面。
   重启tomcat,再访问:http://localhost:8080/axis2/helloword?wsdl

. eclipse下面搭建axis2的web项目

(1),以下方法有助于认识axis2布署目录和web项目的布署目录

. 新建web项目:xmWSTest
|-src
 |- xm.dao
 |- xm.dao.impl
 |- xm.services
 |- xm.ws
 |- MyWebServices.java
 |- xm.util

. 将axis2.war/WEB-INF 下面的所有文件及文件夹拷贝到xmWSTest/webContent/WEB-INF下面
    将axis2.war/axis2-web文件夹及文件复制到xmWSTest/webContent/下面
    xmWSTestr项目的WEB-INF下面至少有如下目录:

|-WEB-INF
|- classes (项目的class文件)
|- conf (放axis2.xml配置文件)
|- axis2.xml
|- lib      (项目引用的包,这个大家都知道,axis2的包也放在这下面)
|- modules (axis2本来就有的,复制过来就有了)
|- services (放置生成的ws的aar包)
|- services.list (默认)
|- version.aar (默认)
|- web.xml (必须是axis2下面的web.xml,如果需要其它配置,可以自己加)

web.xml配置如下:

  1. <!--以下配置:拦截所有:/services/* 与 *.jws 的url 请求 将这些请求识为ws请求-->
  2. <servlet>
  3. <display-name>Apache-Axis Servlet</display-name>
  4. <servlet-name>AxisServlet</servlet-name>
  5. <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>AxisServlet</servlet-name>
  9. <url-pattern>/servlet/AxisServlet</url-pattern>
  10. </servlet-mapping>
  11. <servlet-mapping>
  12. <servlet-name>AxisServlet</servlet-name>
  13. <url-pattern>*.jws</url-pattern>
  14. </servlet-mapping>
  15. <servlet-mapping>
  16. <servlet-name>AxisServlet</servlet-name>
  17. <url-pattern>/services/*</url-pattern>
  18. </servlet-mapping>
  19.  
  20. <!--以下请求将拦截所有的 /axis2-admin/* 的url请求, 这些请求将进入axis2的后台管理界面,
  21. 但是需要,axis2.xml,axis2.policy。这两个配置文件可以在axis2/conf下面找到,放在
  22. WEB-INF/conf 下面
  23. -->
  24. <servlet>
  25. <display-name>Apache-Axis Admin Servlet Web Admin</display-name>
  26. <servlet-name>AxisAdminServlet</servlet-name>
  27. <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
  28. <load-on-startup>100</load-on-startup>
  29. </servlet>
  30. <servlet-mapping>
  31. <servlet-name>AxisAdminServlet</servlet-name>
  32. <url-pattern>/axis2-admin/*</url-pattern>
  33. </servlet-mapping>

. 接下来构建类似于上面打包ws.aar的目录树,在WEB-INF下面新建:classes 文件夹,并将编译过的class文件这下面,便于快速度发布
   方法:右键项目名-->Build Path-->Configure Build Path-->Source选项卡 最下面:Default output folder 
   -->Browse,指定到新建的classes目录下面;

. 接下来在services文件夹下新建:(如下)
|- MyWebServices (和自己项目下面,自己写的web service 类的类名一样)
|- META-INF
|- services.xml

services.xml 文件内容如下:

  1. <service name="figur8WebService" >
  2. <Description>
  3. Please Type your service description here(这里写一些这个webservices的描述,有助于自己或者别人的理解)
  4. </Description>
  5. <messageReceivers>
  6. <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
  7. <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
  8. </messageReceivers>
  9. <!--这里指定web services 的类路径-->
  10. <parameter name="ServiceClass" locked="false">xm.ws.MyWebServices</parameter>
  11. </service>

. 做了如上配置以后,直接可以布署在tomcat中运行了。
   http://localhost:8080/xmWSTest/services/MyWebServices?wsdl

(2),通过上面方法以后,我们可以直接使用ant来搞定所有的事情!

准备:在WEB-INF下面新建:services-MyWebServices.xml
  内容:和上面一样

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="xmWS" default="compile" basedir=".">
  3. <property name="tempDir" value="${basedir}/webContent/temp" />
  4. <!--指定axis2的安装目录-->
  5. <property name="axis2_home" value="D:/lib/axis2/axis2-1.6.2-bin/axis2-1.6.2" />
  6. <!--web Service Name-->
  7. <property name="servicesName" value="MyWebServices" />
  8.  
  9. <target name="compile" depends = "prepared">
  10. <!-- java compile to classes -->
  11. <javac srcdir="${basedir}/src" destdir="${basedir}/webContent/WEB-INF/classes/"
  12. includeantruntime="true" memoryMaximumSize="256m" fork="true">
  13. <!-- <compilerarg line="-encoding UTF-8 "/>
  14. -->
  15. <classpath refid="refjar"/>
  16. </javac>
  17. </target>
  18.  
  19. <target name="prepared">
  20. <!--复制文件,构建上面的目录-->
  21. <!--从axis2_home下面复制axix2-web文件夹 -->
  22. <mkdir dir="${basedir}/webContent/axis2-web" />
  23. <copy todir="${basedir}/webContent/axis2-web" overwrite="true">
  24. <fileset dir="${axis2_home}/webapp/axis2-web" />
  25. </copy>
  26.  
  27. <!--从axis2_home下面复制conf文件夹 到项目下面的WEB-INF/ -->
  28. <mkdir dir="${basedir}/webContent/WEB-INF/conf" />
  29. <copy todir="${basedir}/webContent/WEB-INF/conf" overwrite="true">
  30. <fileset dir="${axis2_home}/conf" />
  31. </copy>
  32.  
  33. <!--从axis2_home下面复制lib到WEB-INF/lib 下面 -->
  34. <copy todir="${basedir}/webContent/WEB-INF/lib" overwrite="true">
  35. <fileset dir="${axis2_home}/lib" />
  36. </copy>
  37.  
  38. <!--复制modules 到WEB-INF下面-->
  39. <mkdir dir="${basedir}/webContent/WEB-INF/modules" />
  40. <copy todir="${basedir}/webContent/WEB-INF/modules" overwrite="true">
  41. <fileset dir="${axis2_home}/repository/modules" />
  42. </copy>
  43.  
  44. <!-- 将axis2_home下面的url拦截文件打包到lib下面 -->
  45. <mkdir dir="${basedir}/webContent/WEB-INF/classes" />
  46. <copy todir="${basedir}/webContent/WEB-INF/classes" overwrite="true">
  47. <fileset dir="${axis2_home}/webapp/WEB-INF/classes" />
  48. </copy>
  49.  
  50. <!--
  51. <jar destfile="${basedir}/webContent/WEB-INF/lib/xm_axis2_urlmapping.jar"
  52. basedir="${axis2_home}/webapp/WEB-INF/classes" >
  53. </jar>
  54. -->
  55.  
  56. <!-- 将新建web Service 文件夹 -->
  57. <mkdir dir="${basedir}/webContent/WEB-INF/services" />
  58. <mkdir dir="${basedir}/webContent/WEB-INF/services/${servicesName}" />
  59. <mkdir dir="${basedir}/webContent/WEB-INF/services/${servicesName}/META-INF" />
  60. <!-- 将services-wsname.xml复制到 META-INF -->
  61. <copy file="${basedir}/webContent/WEB-INF/services-${servicesName}.xml"
  62. tofile="${basedir}/webContent/WEB-INF/services/${servicesName}/META-INF/services.xml"
  63. />
  64.  
  65. <copy todir="${basedir}/webContent/WEB-INF/services/${servicesName}" overwrite="true">
  66. <fileset dir="${axis2_home}/repository/services" />
  67. </copy>
  68.  
  69. </target>
  70.  
  71. <path id="refjar">
  72. <fileset dir="${basedir}/webContent/WEB-INF/lib">
  73. <include name="**/*.jar"></include>
  74. </fileset>
  75. </path>
  76.  
  77. </project>

打开命令窗口,定位到项目目录下面,运行命令:ant
  在eclipse中直接布置项目,并运行
  在浏览器中输入:http://localhost:8080/xmWSTest/services/MyWebServices?wsdl

axis2学习, ant 构建axis2 ws的更多相关文章

  1. 学习笔记:首次进行JUnit+Ant构建自动的单元测试(二)

    关键字:JUnit,Ant,单元测试 终于把JUnit+Ant构建单元测试的大概了解了,其实我实践的过程是对了,只是指导博客(看到这里不懂请看我上一篇博客)本身的错误“成功”把我带入“坑”,有时候网友 ...

  2. 学习笔记:首次进行JUnit+Ant构建自动的单元测试(一)

    指导博客:https://blog.csdn.net/Cceking/article/details/51692010 基于软件测试的需求,使用JUnit+Ant构建自动的单元测试. IDE:ecli ...

  3. Ant—使用Ant构建一个简单的Java工程(两)

    博客<Ant-使用Ant构建一个简单的Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant: 上面样例须要运行多条ant命令才干运行Test类中的 ...

  4. 深入了解Ant构建工具 命令

    深入了解Ant构建工具 标签: ant工具任务jarjavaclass 2010-05-29 21:16 1346人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  5. 2013.11.15 初学ant构建

    该做的事情都差不多做完了,今天开始用ant构建,所以学了下ant,其实要不是因为ubuntu时不时的抽风我应该早就可以开始构建了,但重写的时候也想清楚了一些逻辑,优化了一些地方.下面是我这辈子写的第一 ...

  6. Ant构建和部署项目(转)

    原文地址: http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html Ant是一个Apache基金会下的跨平台的构件工具,它可以实 ...

  7. Ant构建与部署Java项目---入门

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建 ...

  8. Ant构建原理及build.xml文档描述

    最近在改写jmeter,用到ant构建,记录一下. Ant的概念Make命令是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant ...

  9. [Android] 基于 Linux 命令行构建 Android 应用(五):Ant 构建命令

    Android SDK 提供的 android 工具可以在项目根目录自动生成 Ant 构建文件 build.xml[1].进入项目根目录后,你可以使用以下 Ant 命令[2]. ant clean 清 ...

随机推荐

  1. WEBUS2.0 In Action - 搜索操作指南 - (1)

    上一篇:WEBUS2.0 In Action - 索引操作指南(2) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(2) 1. IQueriable中内置的搜索功能 在Webus ...

  2. JAVA 日志管理

    http://www.360doc.com/content/10/0704/05/2017726_36768082.shtml http://javacrazyer.iteye.com/blog/11 ...

  3. HDU 5340 Three Palindromes (Manacher)

    题意: 判断是否能将字符串S分成三段非空回文串. 思路: 先预处理出前缀回文串和后缀回文串的位置,将位置分别装入两个集合中,O(n). 针对每个前缀回文串的终点位置,挑出不相交的后缀回文串,对中间那段 ...

  4. HDU 5265 pog loves szh II (技巧)

    题意:给一个数字序列,要求再其中找到两个数,其和再模p的结果是最大的,求此和. 思路:先将输入的元素模p,排序.结果可能有两种情况: (1)a+b大于p:肯定由两个最大的数之和来产生. (2)a+b小 ...

  5. MAC自动备份数据到服务器

    需求:公司内部使用自己电脑,回家需要使用另一台电脑,所以想时时备份公司用的电脑中文件.代码到服务器上,回家就可以用啦 1 无密码使用scp (1)第一步:生成密匙对,我用的是rsa的密钥.使用命令 & ...

  6. 一道program test题目

    前天去面试的一道上机测试题(凭记忆写的题目)Question:给定输入整数\(\left( k \right)\),找到最小的自然数\(n\left( {n \ge 1} \right)\),使得下列 ...

  7. 聊聊Oracle 11g的Snapshot Standby Database(上)

    Oracle 11g是Data Guard的重要里程碑版本.在11g中,Active DataGuard.Advanced Compression等特性大大丰富了Data Guard的功能和在实践领域 ...

  8. 三 最简单的 AndEngine 程序框架

    package com.example.AndEngineExample; import org.anddev.andengine.engine.Engine;import org.anddev.an ...

  9. PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据

    From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_ ...

  10. canvas小知识

    清单 1. 绘制 canvas 矩形 function drawRect(){ var canvas = document.getElementById('canvas'); if (canvas.g ...