Tomcat手动发布WebService —— axis2

  1. 准备工作。先去官网下载axis2-1.6.2-bin.zip,axis2-1.6.2-war.zip这两个包,解压axis2-1.6.2-bin.zip包到一个目录(我的是C盘),设置环境变量AXIS2_HOME=C:\axis2-1.6.2,这个步骤和设置JDK一样,就不说了。解压axis2-1.6.2-war.zip得到war包axis2.war,放在tomcat的里运行,访问地址是http://localhost:8080/axis2/,成功页面如下:
    Tomcat手动发布WebService —— axis2_第1张图片
     项目axis2的目录结构如下: 
  2. axis2-web
    META-INF
    WEB-INF
        classes 
        conf
            axis2.xml 
        lib
            activation.jar
            ...
            xmlSchema.jar
        modules
            modules.list 
            addressing.mar
            ...
            soapmonitor.mar
        services
            services.list
            aservice.aar
            ...
            version.aar
        web.xml
  3. 有多种发布方法。第一种方法:直接发布类文件(.class)。缺点是此类文件中不能有包路径,否则发布出错,下面来发布以下这个类,
    import java.util.Random;
    
    /**
     * 
     * @author yanqh
     * @since 2013-7-29
     * 
     */
    public class HelloWorldService {
    
    	public String sayHello(String name) {
    		return name + " say: hello [axis2]";
    	}
    	
    	public int getAge(int i) {
    		return i + new Random().nextInt(100);
    	}
    }
     。在项目axis2的WEB-INF下新建文件夹pojo,把HelloWorldService.class放在pojo里就OK了。插话{ 为什么要用pojo文件夹呢?查看项目WEB-INF\conf下的axis2.xml文件中有这么一句
    <deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
     }。点击项目主页的Services链接来查看发布的Service,如下:Tomcat手动发布WebService —— axis2_第2张图片
  4.  使用地址http://localhost:8080/axis2/services/HelloWorldService/sayHello?name=yanqh来访问HelloWorldService中的sayHello方法,

    插话{网上看到可以直接发布jar包,这样就可以在类文件中有包路径,我没试过就不在这里写了}
  5. 第二种方法:打aar包进行发布。下面来发布以下这个类,
    package samples.quickstart.service.pojo;
    
    import java.util.HashMap;
    
    public class StockQuoteService {
        private HashMap map = new HashMap();
    
        public double getPrice(String symbol) {
            Double price = (Double) map.get(symbol);
            if(price != null){
                return price.doubleValue();
            }
            return 42.00;
        }
    
        public void update(String symbol, double price) {
            map.put(symbol, new Double(price));
        }
    }
     新建services.xml,
    <?xml version="1.0" encoding="UTF-8"?>
    <service name="StockQuoteService" scope="application">
        <description>
            Stock Quote Sample Service
        </description>
        <messageReceivers>
            <messageReceiver 
                mep="http://www.w3.org/2004/08/wsdl/in-only"
        class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
            <messageReceiver
                mep="http://www.w3.org/2004/08/wsdl/in-out"
        class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
        </messageReceivers>
        <parameter name="ServiceClass">
            samples.quickstart.service.pojo.StockQuoteService
        </parameter>
    </service>
     然后构建以下目录结构,
     - StockQuoteService  //这个文件夹名字是任意的
       - META-INF
         - services.xml
       - lib
       - samples
         - quickstart
           - service
             - pojo
               - StockQuoteService.class
       - StockQuoteService.wsdl  //在第6步生成的
  6. 打开命令行,执行以下命令
    Tomcat手动发布WebService —— axis2_第3张图片
     之后StockQuoteService目录下生成了StockQuoteService.wsdl文件,再执行以下命令
    Tomcat手动发布WebService —— axis2_第4张图片
     之后StockQuoteService目录下生成了StockQuoteService.aar包,把aar包放到项目axis2\WEB-INF\services中,然后再看Services列表
    Tomcat手动发布WebService —— axis2_第5张图片

你可能感兴趣的:(webservice,axis2)