使用axis2配置webservice服务

来源:互联网 发布:西安行知教育老师待遇 编辑:程序博客网 时间:2024/05/22 18:23
一、所需资源和工具
 1、wsdl文件,在这里命名为testService.wsdl
 2、axis2 开发包:axis2-1.6.1-bin.zip
    axis2 运行包:axis2-1.6.1-war.zip
    
    开发包主要用到里面的lib下得jar包,运行包需要放到tomcat的webapps下   

    下载路径:http://axis.apache.org/axis2/java/core/download.cgi
 3、tomcat 5.0以上
 4、JDK1.5
 5、eclipse的fat打包插件,因为可能tomcat不一定能引用到包,所以最好将所有用到的jar包打到一起,省得报类找不到之类的错误
 6、eclipse-jee-helios-SR1-win32开发工具

二:环境配置步骤
1、将axis2-1.6.1-war.zip解压后,复制文件中的axis2.war到tomcat的webapps目录下,重命名为testService.war,启动tomcat,会发现webapps下多了一个testService的文件夹
2、将testService\WEB-INF\conf目录下得axis2.xml打开,找到servicePath属性,如果注释的话则取消注释,将其值设置为testService
3、将testService\WEB-INF\web.xml打开,找到AxisServlet下得/services/*,将/services/*修改为/testService/*
4、配置tomcat,到tomcat的conf目录下,打开server.xml,将Host属性修改为如下:
   <Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
   在增加<Context path="" docBase="E:\apache-tomcat-6.0.32\webapps\testService" reloadable="true" />
  注:docBase为项目部署的绝对路径

三、开发步骤
1、将axis2-1.6.1-bin.zip解压,如路径:c:/axis2-1.6.1,增加系统环境变量c:/axis2-1.6.1/bin
2、打开cmd命令窗口,定位到wsdl所在目录,执行命令:WSDL2Java.bat -uri testService.wsdl -ss –sd,执行完毕后目录下会多出src和resources文件夹
3、在eclipse中新建一个java工程,命名为testService,将src下得java文件拷贝到项目中,将axis2的jar包导入到工程中,同时将resource文件夹也拷贝到项目中
4、找到*ServiceSkeleton.java,*表示wsdl中得服务名,假设wsdl中定义了两个接口test1、test2和test3,则在此java类中则会有test1、test2和test3,实现test1、test2和test3业务处理

四:服务配置步骤
1、现在我需要定义两个服务service1和service2,service1用来处理test1,service2用来处理test2
2、首先使用fat打包插件将testService工程打包,打包名为testService.jar,将它重命名为testService.aar
3、配置services.xml,将刚才resources中得services.xml打开,可以看到servce的配置,一个service表示一个服务,现在我要启用两个服务则需要复制一份service

   修改后大致结构如下:

<?xml version="1.0" encoding="UTF-8"?><!-- This file was auto-generated from WSDL --><!-- by the Apache Axis2 version: 1.6.1  Built on : Aug 31, 2011 (12:22:40 CEST) --><serviceGroup><service name="services1">        <messageReceivers>            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="...."/>        </messageReceivers>        <parameter name="ServiceClass">com.chinatelecom.ismp.sp.IsmpSpEngineServiceSkeleton</parameter>        <parameter name="useOriginalwsdl">true</parameter>        <parameter name="modifyUserWSDLPortAddress">true</parameter>        <operation name="test1" mep="http://www.w3.org/ns/wsdl/in-out">            <actionMapping>\"\"</actionMapping>            <outputActionMapping>....</outputActionMapping>        </operation>    </service>    <service name="services2">        <messageReceivers>            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="com.chinatelecom.ismp.sp.IsmpSpEngineServiceMessageReceiverInOut"/>        </messageReceivers>        <parameter name="ServiceClass">com.chinatelecom.ismp.sp.IsmpSpEngineServiceSkeleton</parameter>        <parameter name="useOriginalwsdl">true</parameter>        <parameter name="modifyUserWSDLPortAddress">true</parameter>        <operation name="test2" mep="http://www.w3.org/ns/wsdl/in-out" >            <actionMapping>\"\"</actionMapping>            <outputActionMapping>....</outputActionMapping>        </operation>        <operation name="test3" mep="http://www.w3.org/ns/wsdl/in-out" >            <actionMapping>\"\"</actionMapping>            <outputActionMapping>....</outputActionMapping>        </operation>    </service></serviceGroup>
其中 service name 表示服务名,对应的operation 为接口,现在就是services1对应了test1,servcie2对应了test2,test3,即使用services1可以处理test1的业务,使用service2可以处理test2和test3的业务
 上面有....的表示保持原来的配置
 注意:需要将<actionMapping>的值修改为\"\"


4、修改wsdl文件,因为要配置两个服务,所以需要两个wsdl文件,复制testService.wsdl两份,重命名为service1.wsdl,service2.wsdl
   打开service1.wsdl,将 <wsdl:service name="***"> 修改为services1,保存;
   打开service2.wsdl,将 <wsdl:service name="***"> 修改为services2,保存。

5、使用winrar打开testService.aar,将services.xml,service1.wsdl和service2.wsdl复制到META-INF文件夹中
6、将修改后的testService.aar放到tomcat的webapps\testService\WEB-INF\services中,然后重启tomcat,可以看到tomcat将testService.aar发布了


生成一个客户端测试:
1、打开cmd命令输入窗口,定位到wsdl所在目录,执行WSDL2Java.bat -uri testService.wsdl
2、将生成的src放到一个java工程中,然后就可以进行测试


原创粉丝点击