`
rickyboy
  • 浏览: 3733 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

axis2的初探

阅读更多
    闲扯axis2,axis2听说功能很强大,一直没有机会接触,由于变态的普元esb使用的wsdl都是需要axis2生成,不是axis2生成的他还不支持了。做的产品还是非常的demo,不过也是一直秉承普元的风格,在融合项目的过程中来改善产品的性能,这样也好我就有机会来看看axis2到底有多强大,对新规范的支持好像也是比较符合潮流的。下面就一个简单的helloworld例子来开启axis2之旅。

   1. 准备工作:
   这部分基本上和其他的axis1一样的风格,不过好像axis2对于pojo有了更加简单的部署方法。这个就不介绍了。下面ps中有介绍的。就来看看需要做哪些准备工作:
   1.1下载安装JDK,不要低于1.4版本,不过现在也很少1.4的版本在用了。
   1.2下载axis2,它分为三部分。bin zip war可以都下载下来。
   1.3把war文件复制到servlet容器(tomcat)下的webapps下,启动tomcat。war会自动解开。
   1.4配置axis2环境变量。设置AXIS2_HOME环境变量来指出目标目录,注意Axis2生成的所有脚本和构建文件依赖于这个值,所以不要遗漏了这个步骤。
大多数情况下,我们的服务也将需要一个WSDL文件,Axis2的Java2WSDL可以用来生成一个WSDL。执行以下步骤来从一个Java类生成一
个WSDL文件:
1,创建并编译Java类
2,使用该命令生成WSDL:
%AXIS2_HOME%/bin/java2wsdl -cp . -cn samples.quickstart.service.pojo.StockQuoteService -of StockQuoteService.wsdl
移动你生成WSDL文件,你可以做你需要的任何更改。例如,你可能添加自定义的过错或者改变生成的元素名。例如,该StockQuoteSer
vice.wsdl位于%AXIS2_HOME%/samples/quickstartadb/resources/META-INF文件夹,我们将在本指南的其他部分使用它,代替生成过
程创建的一般参数。
    2.编写和发布webservice
    2.1 通过简单的pojo来发布webservice服务
     2.1.1建立一个工程
    对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。

    下面我们来实现一个简单的POJO,代码如下:
public class SimpleService
{
    public String getGreeting(String name)
    {
        return "你好 " + name;
    }    
    public int getPrice()
    {
        return new java.util.Random().nextInt(1000);
    }    
}

在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。

    编译SimpleService类后,将SimpleService.class文件放到<Tomcat安装目录>\webapps\axis2\WEB-INF\pojo目录中(如果没有pojo目录,则建立该目录)。现在我们已经成功将SimpleService类发布成了WebService。在浏览器地址栏中输入如下的URL:
http://localhost:8080/axis2/services/listServices
    2.1.2这时当前页面将显示所有在Axis2中发布的WebService,如图2所示。

在浏览器地址栏中输入如下的两个URL来分别测试getGreeting和getPrice方法:
http://localhost:8080/axis2/services/SimpleService/getGreeting?name=bill
http://localhost:8080/axis2/services/SimpleService/getPrice

    图3和图4分别显示了getGreeting和getPrice方法的测试结果。

    2.1.3pojo发布服务需要注意的问题
在编写、发布和测试0配置的WebService时应注意如下几点:
    1. POJO类不能使用package关键字声明包。
    2. Axis2在默认情况下可以热发布WebService,也就是说,将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。如果想取消Axis2的热发布功能,可以打开<Tomcat安装目录>\webapps\axis2\WEB-INF\conf\axis2.xml,找到如下的配置代码:
<parameter name="hotdeployment">true</parameter>
    将true改为false即可。要注意的是,Axis2在默认情况下虽然是热发布,但并不是热更新,也就是说,一旦成功发布了WebService,再想更新该WebService,就必须重启Tomcat。这对于开发人员调试WebService非常不方便,因此,在开发WebService时,可以将Axis2设为热更新。在axis2.xml文件中找到<parameter name="hotupdate">false</parameter>,将false改为true即可。

    3. 在浏览器中测试WebService时,如果WebService方法有参数,需要使用URL的请求参数来指定该WebService方法参数的值,请求参数名与方法参数名要一致,例如,要测试getGreeting方法,请求参数名应为name,如上面的URL所示。
    4. 发布WebService的pojo目录只是默认的,如果读者想在其他的目录发布WebService,可以打开axis2.xml文件,并在<axisconfig>元素中添加如下的子元素:
    <deployer extension=".class" directory="my" class="org.apache.axis2.deployment.POJODeployer"/>
    上面的配置允许在<Tomcat安装目录>\webapps\axis2\WEB-INF\my目录中发布WebService。例如,将本例中的SimpleService.class复制到my目录中也可以成功发布(但要删除pojo目录中的SimpleService.class,否则WebService会重名)。

     2.2 通过原始的方法发布webservice服务
     2.2.1带有包的类就不能用第一种的方法来发布。
     建立一个java工程(这里也可以建立一个web工程)
package com.starit.pojo;

public class SimpleService
{
    public String getGreeting(String name)
    {
        return "你好 " + name;
    }    
    public int getPrice()
    {
        return new java.util.Random().nextInt(1000);
    }    
}



    2.2.2对这个类进行编译,并把他拷贝到一个目录里(E:\java技术学习\webservice技术\AXIS2\axis2-1.5.2\samples\test)
    2.2.3在下面建立一个META-INF并在services.xml。内容为:
<service name="WeatherService" scope="application">
    <description>Weather POJO 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">
        com.starit.pojo.SimpleService
    </parameter>
</service>

    2.2.4生成一个.aar文件
     通过cmd进入到E:\java技术学习\webservice技术\AXIS2\axis2-1.5.2\samples\test目录下敲入命令:jar cvf helloworld.aar .
    2.2.5把aar文件拷贝到axis2的webapps/axis2/WEB-INF/services下
启动tomcat
通过http://localhost:8080/axis2/services/WeatherService?wsdl来验证下。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics