Axis2发布webservice(3)--axis2生成wsdl文件,并利用wsdl文件来生成WebService的Java代码...

一、利用axis2生成wsdl文件

1、file->New->Other->Axis2 Code Generator

clip_image002

2、选择第2个,点击next

clip_image004

3,先点击add folder->浏览选择WebService项目下的bin文件夹,然后在fully Qualified Class name中填入类路径(包括包名)

clip_image006

然后点击Test 测试是否正确。

clip_image008

点击Next

4、可以看到即将发布的WebService名称和命名空间

clip_image010

5、继续Next,选择wsdl文件保存目录

clip_image012

这样services.wsdl文件就生成了。

二、用axis2工具根据wsdl文件生成java文件,并编写客户端调用的代码

1、file->new->other->axis2 code generetor

clip_image002[1]

2、选择第1项,根据wsdl文件生成Java代码,点击Next

clip_image014

3、然后选择第一步生成的wsdl文件

clip_image016

4、点击Next,就可以看到你要生成指定方法的代码的选项,我选择的是第2项

clip_image024

注意的是在选择PortName的时候,不同的选项将会生产不同的调用代码,其调用方式也略有不同

5、点击Next,选择代码输出保存的目录,最好不要选择WebService的目录,换一个新的Javaproject目录,不然会跟之前的文件冲突,然后点击Finish

clip_image026

6、打开输出的文件夹,发现多出了很多文件

1

三、 编写客户端代码

package test;

import java.rmi.RemoteException;
import java.util.List;

import com.hoo.service.EditUser;
import com.hoo.service.EditUserResponse;
import com.hoo.service.GetUser4Array;
import com.hoo.service.GetUser4ArrayResponse;
import com.hoo.service.ManagerUserServiceStub;
import com.hoo.service.xsd.User;

public class ManagerUserServiceClient {

    public static void main(String[] args) throws RemoteException {

        /* ManagerUserServiceStub文件对应的是整个WebService
         * 该类中有对应于WebService中public方法的方法
         * 通过实例化一个该类的对象,并调用相应的方法,就可以调用WebService的方法
         * */
        ManagerUserServiceStub stub = new ManagerUserServiceStub();

        /*
         * EditUser对应的是WebService的方法,对于WebService的每个public方法,生成一个以该方法命名的类
         * 但是首字母会大写
         * 该类中有相应的方法editUser
         * */
        EditUser editUser = new EditUser();
        
        User user = new User();
        user.setAddress("China");
        user.setEmail("hww@163.com");
        user.setName("hww");
        user.setId(1);
        
        User user1 = new User();
        user1.setName("jsy");
        user1.setEmail("jsy@163.com");
        user1.setId(47);
        user1.setAddress("China");
        
        
        /*
         * EditUser的对象要通过set方法设置方法的参数
         * 比如,eidtUser(User user)方法有一个User类型的参数,那么在对应的类里面,就会有对应的设置参数的
         * 方法
         * */
        editUser.setUser(user);
        
        /*
         * 对于每个方法会生成一个对应的response类
         * 通过stub对象调用该方法,方法的参数是对应类的对象
         * 返回值会通过response对象返回
         * */
        EditUserResponse eur = stub.editUser(editUser);
        
        //获取返回值
        User returnUser = eur.get_return();
        System.out.println(returnUser.getName());
        
        //调用其他方法
        GetUser4Array getUser4Array = new GetUser4Array();
        getUser4Array.setJ(3);
        GetUser4ArrayResponse response1 = stub.getUser4Array(getUser4Array);
        User[] user_list = response1.get_return();
        for(User u:user_list){
            System.out.println(u.getId());
        }
    }

}

输出结果是:hww

                   22

                   23

                   24

转载于:https://www.cnblogs.com/hewenwu/p/3860083.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值