zoukankan      html  css  js  c++  java
  • Spring 与CXF整合(spring3.2,cxf3.1.11)

    1,jar包导入,从官网下载zip文件后里面会有很多jar包,哪些必须哪些不是必须,我能力有限,从其他人那参考了导入的一下jar包。

    2、配置相关文件

    web.xml中配置servlet

    <servlet>
            <servlet-name>CXFService</servlet-name>
            <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>CXFService</servlet-name>
            <url-pattern>/zxg/*</url-pattern>  //此处用于访问时的路径比如    项目名称/zxg ,自己随意改
        </servlet-mapping>

    3、配置到spring中

    我的是apllication-context.xml中

    <jaxws:endpoint id="userService"        接口名称
                implementor="com.webservice.spring.UserWSImpl"   接口的实现类
                address="/webservice">                                                 系统自动给zxg后面追加的地址,自己随意改
           </jaxws:endpoint>

    4、服务端其实就是将一个方法进行了发布,说直白就是一个特殊的方法,就是写一个接口,再写一个接口实现类,在实现类中做一些业务处理,再返回相应处理结果,把代码贴一下,三个类

    @WebService
    public interface UserWS {
        public User1 getUserById(long id);
    }

    @WebService
    public class UserWSImpl implements UserWS{

        @Override
        public User1 getUserById(long id) {
            User1 user = new User1();
            user.setAge(18);
            user.setName("张三");
            user.setId(1);
            return user;
        }

    }

    @SuppressWarnings("serial")  
    public class User1 implements Serializable {  

        private int id;  
        private String name;  
        private int age;  
        private String description;  
          
        public User1() {  
            super();  
        }  

     
        public int getId() {
            return id;
        }


        public void setId(int id) {
            this.id = id;
        }


        public String getName() {
            return name;
        }


        public void setName(String name) {
            this.name = name;
        }


        public int getAge() {
            return age;
        }


        public void setAge(int age) {
            this.age = age;
        }


        public String getDescription() {  
            return description;  
        }  

        public void setDescription(String description) {  
            this.description = description;  
        }  
          
          

    5、启动项目访问wsdl看是否成功localhost:8080/myFirstBlood/zxg/webservice?wsdl

    6、成功后,将cxf配置到系统变量中,通过dos命令生成客户端代码,这个网上教程比较多,而且没有啥大难度,不写了

    7、客户端做好后,一般调用时会报错说类名重复一类的,需要做的就是将每一个get*这样的类中的方法中@XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "getUserById1", propOrder = {
        "arg0"
    })中name的名称改一下,比如这个加了一个1.接口中方法越多自动生成的get方法也多,需要每一个都改。这样总体就没啥错误了。

    8、客户端test

    public class Test {
        public static void main(String[] args) {
            UserWSImplService ui = new UserWSImplService();
            UserWS uws = ui.getUserWSImplPort();
            User1 user = uws.getUserById(1);
            System.out.println(user.getName());
        }
    }

  • 相关阅读:
    TODO supply a title
    three.js ---- 3d页面开发入门
    ProgressBar.Style ---- Marquee
    C#中的Task.Delay()延迟与异步执行返回结果
    位运算-实现加减乘除
    2020年专项附加扣除信息,个税纳税记录查询
    C#动态执行JS和VBS脚本
    windows下bat批处理实现守护进程(有日志)
    C#创建快捷方式的两种方法
    C#中创建程序的快捷方式
  • 原文地址:https://www.cnblogs.com/zxg-blog/p/7093542.html
Copyright © 2011-2022 走看看