用axis2+Tomcat+myeclipse部署和访问Web服务

 

部署并访问一个Web服务,步骤如下:


6. 建立一个JavaProject命名为AccountService,将axis2用户库加入到buildpath中。项目存放路径先Tomcat的webapps下。在project中建立WEB-INF,META-INF两个web项目常用目录及子目录和文件,并建立资源存放文件夹src。并将WEB-INF\classes设置为编译文件输出位置。

7. 现在开始编写要发布的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];
    }
}

8. 在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">
  <messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>
 <operation name="deposit">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>
 <operation name="withdraw">
  <messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>
 <operation name="getAccount">
  <messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </operation>   
</service>

9. 打包要发布的Service,Eclipse中New --> 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(也可不修改),将其拷贝到Tomcat5.5\webapps\axis2\WEB-INF\services目录下,重新打开http://127.0.0.1:8080/axis2/services/AccountService就会发现AccountService已经发布成功,现在就可以应用这个Web服务了。

10. Eclipse中New --> File --> Other --> Axis2 wizards--> Axis2 Code Generator,按向导通过javasource文件,即AccoutOper.class生成WSDL文件。

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

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

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

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

11、通过WSDL文件生成(客户端文件)AccountServiceCallbackHandler.java和AccountServiceStub.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.java和AccountServiceStub.java的生成。

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

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


12. 编写服务测试程序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 = newAccountServiceStub(endpoint);

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

        AccountServiceStub.Withdraw draw = newAccountServiceStub.Withdraw();
        draw.setMoney( 50 );
        AccountServiceStub.WithdrawResponsedrawRes = stub.withdraw( draw );
        System.out.println( "After Withdraw50: " + drawRes.get_return() );
        
        AccountServiceStub.GetAccountResponsegetLast = 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 ObjectModel) 教學:
http://ws.apache.org/axis2/1_0/OMTutorial.html

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

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值