zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    项目选题报告答辩总结
    第七次作业--项目需求分析(团队)
    第六次作业--结对编程第二次
    第四次作业——项目选题报告
    eclipse 部署maven 的web 项目提示找不到类的问题
    Spring中的applicationContext.xml与SpringMVC的xxx-servlet.xml的区别
    在eclipse中maven web项目搭建
    eclipse maven plugin 插件 安装 和 配置
    Maven最佳实践:Maven仓库
    eclipse jadclipse 反编译安装说明
  • 原文地址:https://www.cnblogs.com/hewenwu/p/3860083.html
Copyright © 2011-2022 走看看