用axis2+Tomcat5.5+Eclipse3.2部署和访问Web服务

来源:互联网 发布:centos7.2搭建php环境 编辑:程序博客网 时间:2024/06/03 21:41

axis2+Tomcat5.5+Eclipse3.2部署和访问Web服务

                

一、环境准备

使用Axis来开发Web services需要准备 web 服务器,Axis API。本文使用的Web containerTomcat5.5, Axis API 的版本为Axis2_1.1.1

1.1软件下载准备

Tomcat下载地址:http://tomcat.apache.org/download-55.cgi#5.5.20

Axis标准包:

http://apache.justdn.org/ws/axis2/1_1_1/axis2-1.1.1-src.zip

Axis War包:

http://apache.justdn.org/ws/axis2/1_1_1/axis2.war

Axis Eclipse plug-in(代码生成工具和打包工具):

http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip

http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wizard.zip

Eclipse+MyEclipse:可以到官方网站下载(本文为3.25.0GA

1.2安装

1.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。

2.将下载到的Axis的两个plug-in解压缩到Eclipse安装目录下的plug-in子目录。

3.安装MyEclipse5.0GA。然后启动MyEclipse,并选择“File->New->Other”可以找到下面的这些Wizards,这些将是本文中用到的很重要的工具。

 

4.下面开始搭建Web Services的部署环境。将下载的tomcat报解压缩到一个目录。完成web container 的安装。

5.axis2.war包拷贝到tomcat安装目录下的webapps目录中。

6.启动Tomcat(windows下为TOMCA_HOME/bin中的startup.batLinuxunix环境为startup.sh文件),打开浏览器输入并访问:http://ip:8080/axis2(或2http://localhost:8080/axis)来查看,如果能看到下面的页面则说明已经安装完成。

二、进入开发

2.1 建立要发布的WebService

1. Eclispse中添加一个用户库命名为axis2,将axis2/lib下的包均添加进来。
2. 建立一个JavaProject命名为AccountService,将axis2用户库加入到build path中。
3. 现在开始编写要发布的WebSevice,在src中建包account,建立AccountOper类如下:
package account;

public class AccountOper {
    private static int[] fund = {10000, 500, 700, 5800};
    public static int accountID = 0;//in {0,1,2}

    public boolean setAccountID( int id ) {
        if(id < 0 || id > fund.length)
            return false;
        this.accountID = id;
        return true;
    }
    
    public boolean checkInput(int money)
    {
        if (money > fund[accountID]) {
            return false;
        } else {
            return true;
        }
    }

    //deposit
    public int deposit(int money)
    {
       fund[accountID] = fund[accountID] + money;
       return fund[accountID];
    }

    //withdraw
    public int withdraw(int money) {
        if (checkInput(money)) {
            fund[accountID] = fund[accountID] - money;
        }
        return fund[accountID];

    }

    public int getAccount() {
        return fund[accountID];
    }
}

2.2 发布WebService

1. META-INF下建立services描述文件services.xml如下:
<service name="AccountService">
 <parameter name="ServiceClass"
          locked="false">account.AccountOper</parameter>
 <operation name="setAccountID">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>         
 <operation name="checkInput">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>
 <operation name="deposit">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>
 <operation name="withdraw">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>
 <operation name="getAccount">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>   
</service>

2.
打包要发布的ServiceEclipseNew --> File --> Other --> Axis2 wizards -->
Axis2 Services Archiver
,按照向导选择刚建立的类编译后的class文件和services.xml文件。

1》、选择class文件目录,注意,不是java源文件,而是WEB-INF/classes目录,

 

2》、连按两次下一步,选择service.xml文件,

 

3》、按下一步,输入service文件的保存路径和文件名,完成。


这里将保存路径设为D盘,文件名为AccountService.jar,按完成保存成功,然后修改后缀为aar(也可不修改),将其拷贝到Tomcat 5.5/webapps/axis2/WEB-INF/services目录下,重新打开http://localhost:8080/axis2/services/listService就会发现AccountService已经发布成功,现在就可以应用这个Web服务了。

2.3 测试

6. EclipseNew --> File --> Other --> Axis2 wizards --> Axis2 Code Generator,按向导通过java source文件,即AccoutOper.class生成WSDL文件。这步其实可以省略,当webservice发布后可通过访问http://192.168.1.213:8080/axis2/services/AccountService?wsdl就可以得到wsdl文件,然后根据此URL就可以生成客户端代码,这里主要想演示一下用Axis2 Code Generator工具根据java source文件如何生成WSDL文件。

 

1》选择Generate a WSDL from a Java source file,按下一步

 

 2》、填入class文件的包及文件名,我这是account.AccountOper,然后按Add Folder增加AccountOper.class的所在目录路径,按Test Class Loading..按钮测试是否成功装载这个类文件,若未装载成功请检查包名、类名和路径是否正确。

3》、按下一步,这里的参数设置我们不用管它,用默认的就行了。

4》、选择wsdl文件的保存位置及确定wsdl文件的文件名AcountServices.wsdl,按完成,WSDL文件生成成功。

7、通过WSDL文件生成AccountServiceCallbackHandler.javaAccountServiceStub.java,可以重新建立Project,我在做的过程中为了方便仍利用刚才建立的Project.

1》、New --> File --> Other --> Axis2 wizards --> Axis2 Code Generator

 

2》、选择Generate Java source code from a WSDL file,按下一步

3》、按Browse选择wsdl文件,按下一步

4》、使用默认的配置,按下一步。

 
5
》、选择生成文件的存放路径,完成AccountServiceCallbackHandler.javaAccountServiceStub.java的生成。

6》、在工程目录按F5刷新,就可以看到刚生成的文件,但提示都有错误,这是因为包名不一样。

解决方法是将生成的两个文件直接移动到account包下,如图:


8. 编写服务测试程序AccountTest.java如下:
package account;

public class AccountTest {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String endpoint =  "http://localhost:8080/axis2/services/AccountService";
        AccountServiceStub stub = new AccountServiceStub(endpoint);

        AccountServiceStub.SetAccountID set = new AccountServiceStub.SetAccountID();
        set.setId( 2 );
        stub.setAccountID( set );
        
        AccountServiceStub.GetAccountResponse get = stub.getAccount();
        System.out.println( "Current: " + get.get_return() );
        
        AccountServiceStub.Deposit dep = new AccountServiceStub.Deposit();
        dep.setMoney( 120 );
        AccountServiceStub.DepositResponse depRes = stub.deposit( dep );
        System.out.println( "After Deposit 120: " + depRes.get_return() );

        AccountServiceStub.Withdraw draw = new AccountServiceStub.Withdraw();
        draw.setMoney( 50 );
        AccountServiceStub.WithdrawResponse drawRes = stub.withdraw( draw );
        System.out.println( "After Withdraw 50: " + drawRes.get_return() );
        
        AccountServiceStub.GetAccountResponse getLast = stub.getAccount();
        System.err.println( "At last: " + getLast.get_return() );
    }
}
运行结果如下:

测试成功

 

三、在局域网其他客户机调用

以下介绍在局域网客户端调用上面发布的AccountService。为了不受杀毒软件及防火墙的影响,测试时我们把杀毒软件及防火墙关闭。

1、新建一个web project

2New --> File --> Other --> Axis2 wizards --> Axis2 Code Generator,按下一步

 

3、选择Generate Java source code from a WSDL file,按下一步

4、在文本框中填入http://192.168.1.213:8080/axis2/services/AccountService?wsdl,按下一步

 

5、这里都使用默认的设置,按下一步

 

6、选择输出文件的存放路径,我选择输出在工程的src目录下,按完成按钮,客户端代码生成完毕。

7、刷新一下项目,就可以看到刚生成的客户端文件了,AccountServiceStub.java和AccountServiceCallbackHandler.java,但都有错误,别急,这是生成的包名的问题,我们稍微改一下:把包名src.account改成account就行了。

 

8、写测试类,和在本机测试的一样。

package account;

public class AccountTest {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String endpoint =  "http://localhost:8080/axis2/services/AccountService";
        AccountServiceStub stub = new AccountServiceStub(endpoint);

        AccountServiceStub.SetAccountID set = new AccountServiceStub.SetAccountID();
        set.setId( 2 );
        stub.setAccountID( set );
        
        AccountServiceStub.GetAccountResponse get = stub.getAccount();
        System.out.println( "Current: " + get.get_return() );
        
        AccountServiceStub.Deposit dep = new AccountServiceStub.Deposit();
        dep.setMoney( 120 );
        AccountServiceStub.DepositResponse depRes = stub.deposit( dep );
        System.out.println( "After Deposit 120: " + depRes.get_return() );

        AccountServiceStub.Withdraw draw = new AccountServiceStub.Withdraw();
        draw.setMoney( 50 );
        AccountServiceStub.WithdrawResponse drawRes = stub.withdraw( draw );
        System.out.println( "After Withdraw 50: " + drawRes.get_return() );
        
        AccountServiceStub.GetAccountResponse getLast = stub.getAccount();
        System.err.println( "At last: " + getLast.get_return() );
    }
}
运行结果:

和在本机测试一样,调用成功!

 

 

 

官方文檔非常多及齊全,若想進一步了解, 需要花更長的時間:
http://ws.apache.org/axis2/1_0/index.html

Axis2 的文檔及教學非常充足. 官方文檔如下連結:
http://ws.apache.org/axis2/1_0/index.html

Axis2 官方的安裝教學:
http://ws.apache.org/axis2/1_0/installationguide.html

Axis2 用戶指南:
http://ws.apache.org/axis2/1_0/userguide.html

Axis2 WEB Administration介面的使用教學:
http://ws.apache.org/axis2/1_0/webadminguide.html

Axis2 的設定文檔:
http://ws.apache.org/axis2/1_0/axis2config.html

AXIOM (Axis Object Model)教學:
http://ws.apache.org/axis2/1_0/OMTutorial.html

Axis2 Eclipse plugin教學:
http://ws.apache.org/axis2/tools/1_0/eclipse/wsdl2java-plugin.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑登录密码忘记了怎么办 笔记本电脑登录密码忘记了怎么办 信用卡登录密码忘记了怎么办 华为p9后置摄像头模糊怎么办 手机图片文件夹删了怎么办 发票系统导出的xml怎么办 微信支付被限制怎么办 跨行三天不到账怎么办 测速正常但实际很慢怎么办 善领wifi上网慢怎么办 文件太大拷贝不到u盘怎么办 电脑的视频文件不显示缩略图怎么办 无线网连接不上怎么办 路由器wifi密码忘了怎么办 路由器账号密码忘了怎么办 刷卡刷多了钱怎么办 刷卡刷了两次钱怎么办 小米手机强刷后一联网就被锁怎么办 苹果刷机出现的问题怎么办 小米手机解不开图案锁怎么办 小米6无限重启怎么办 小米5一直显示mi怎么办 小米手机电池进入休眠状态怎么办 小米3s开不开机怎么办 小米n充电关机开机不了怎么办? 关机后强制刷机怎么办 红米手机开机画面怎么办 红米note1无法清理数据怎么办 红米2a密码忘记怎么办 线刷也不成功该怎么办 红米2开不了机怎么办 魅族无限重启怎么办 坚果pro无法双清怎么办 usb外置网卡网速慢怎么办? 无线路由器被改密码怎么办 电脑打不开flv格式的视频怎么办 电脑打不开pdf格式的文件怎么办 pdf格式在电脑上打不开怎么办 zip压缩的时候空间不足怎么办 电子发票填抬头错了怎么办 发票写错一个字怎么办