博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的Spring+CXF例子
阅读量:7087 次
发布时间:2019-06-28

本文共 2501 字,大约阅读时间需要 8 分钟。

hot3.png

服务端:

步骤

  1. 新建web工程
  2. 在此测试导入所有的cxf 的jar包
  3. 新建接口
  4. 新建实现
  5. 在实现类里暴露(声- 明)对应的业务接口
  6. 配置spring-cxf文件
  7. 配置web.xml文件
  8. 发布查看wsdl文档是否成功

 服务端的项目结构

144454_2ssz_2509896.png

//User类是一个bean对象

public class User {

    
    private String name;
    
    private int age;

    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 User(String name, int age) {

        super();
        this.name = name;
        this.age = age;
    }

    public User() {

        super();
    }
    
    
}

//HelloWorldI是一个接口

public interface HelloWorldI {

    User getUserInfo(int id);

}

//注意需要加上@WebService注解

 

//HelloWorldImpl是一个实现类,实现类里对应的方法里有处理业务的逻辑

@WebService(endpointInterface = "com.sp.cxf.HelloWorldI")

public class HelloWorldImpl implements HelloWorldI {

    public User getUserInfo(int id) {

        System.out.println("service is start");
        if (id == 1) {
            return new User("aiwei",1);
        }
        return null;
    }

}

 

spring-cxf.xml是一个spring 的bean配置文件

<!-- cxf对外接口 -->

    <jaxws:endpoint id="hello" implementor="com.sp.cxf.HelloWorldImpl" address="/helloService" />

 

web.xml是整个web工程的配置文件

<!-- 配置spring-cxf.xml -->

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-cxf.xml</param-value>
    </context-param>

    <!-- 应用启动的监听器 -->

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- cxf WebService服务 -->

    <servlet>
        <servlet-name>cxfService</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxfService</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

 

把程序发布到浏览器上,结果

http://localhost:8080/spring-cxf/helloService?wsdl 

145105_iWU1_2509896.png

测试:用Eclipse的内置浏览器来测试

145246_1WHl_2509896.png

输入参数  1  ,结果是有的 。。 输入参数2 ,结果是无的,但都请求到了服务器

145802_9dS7_2509896.png

请求的xml源文件格式

145826_3z9w_2509896.png

响应的源文件格式

145902_AHZO_2509896.png

 

 

新建客户端:客户端采用java原生的的打包和请求方式来测试

步骤:

  1. cmd窗口进入到client端项目的src文件路径下
  2. 通过命令生成wsdl对应的文件
  3. 新建测试类,请求webservice,查看返回结果

进入到src 目录后:wsimport - p com.ws.client  -keep http://localhost:8080/spring-cxf/helloService?wsdl

-p表示包名,可有可无。

刷新项目:

150427_7VQj_2509896.png

 

新建main方法测试请求服务器

public class Test {

    public static void main(String[] args) {

        // TODO Auto-generated method stub
        HelloWorldImplService hw = new HelloWorldImplService();
        HelloWorldI hi = hw.getHelloWorldImplPort();
        User user = hi.getUserInfo(1);
        if(user!=null){
            System.out.println(user.getAge()+"  "+user.getName());
        }else{
            System.out.println("无返回结果");
        }
        
    }
}

控制台:

150653_FKOu_2509896.png

更改请求参数为  2

150639_oyaS_2509896.png

 

至此,一个简单的webservice的服务器和客户端就是这样,后面再来实现下cxf自带的拦截器和我们自定义的拦截器功能。

最后附上一个关于WebService各个节点详解的文章:

转载于:https://my.oschina.net/u/2509896/blog/801463

你可能感兴趣的文章
java在线预览txt、word、ppt、execel,pdf代码
查看>>
libxml/HTMLparser.h file not found 解决方法
查看>>
Redis设计与实现 第二部分
查看>>
3000套IOS android源码分享 7.2G UI素材
查看>>
datagrid增加提示功能tooltip
查看>>
集群架构-用keepalived配置高可用集群
查看>>
10 种最常见的 Javascript 错误(频率最高)
查看>>
获取websocket数据,C#小窗口程序,FTP上传,一切皆配置
查看>>
保险资管需求多元化 壹资管平台赋能行业智能化转型
查看>>
Velocity模板概念及简单使用
查看>>
Java 基础语法
查看>>
汇总:JSTL时间操作
查看>>
常用工具网站
查看>>
史上最全互联网分布式缓存技术视频教程(redis、memcached、ssdb)
查看>>
笨兔兔的故事——带你了解Ubuntu,了解Linux 信封 第二十二章
查看>>
100-2
查看>>
hdu 1541 树状数组
查看>>
系统负载
查看>>
mac osx修改mac地址和路由表
查看>>
ORA-100501: non-ORACLE exception
查看>>