CXF与Spring的整合

本功能主要模拟数据库实现产品的添加与查询功能
服务端
第一步:添加所需的jar包(将CXF下所有的jar包加入到项目中)
第二步:编写productBean 
public class Product {
//    产品编号
    private int proId;
//    产品名称
    private String proName;
//    产品价格
    private String proPrice;
    public int getProId() {
        return proId;
    }
    public void setProId(int proId) {
        this.proId = proId;
    }
    public String getProName() {
        return proName;
    }
    public void setProName(String proName) {
        this.proName = proName;
    }
    public String getProPrice() {
        return proPrice;
    }
    public void setProPrice(String proPrice) {
        this.proPrice = proPrice;
    }


    
第三步:服务器端接口开发(注:必须添加 @ WebService注解 )
package com.pb.cxfspring.dao;
import com.pb.cxfspring.entity.Product;
/**
 * 处理产品信息的接口
 * @author Administrator
 *
 */
@WebService
public interface ProductService {
    /**
     * 添加产品信息
     * @param product
     */
    public void addProduct(Product product);
    
    /**
     * 根据产品ID获取产品信息
     * @param proId
     * @return
     */
    public Product getProductById(int proId);
}


第四步:接口实现类的开发
package com.pb.cxfspring.dao.impl;
import com.pb.cxfspring.dao.ProductService;
import com.pb.cxfspring.entity.Product;
public class productServiceImpl implements ProductService{
    @Override
    public void addProduct(Product product) {
        // TODO Auto-generated method stub
        System.out.println("产品编号:"+product.getProId()+
                "产品名称:"+product.getProName()+
                "产品价格:"+product.getProPrice());
    }
    @Override
    public Product getProductById(int proId) {
        Product product = new Product();
        product.setProId(11);
        product.setProName("ipad");
        product.setProPrice("4500");
        return null;
    }
}
    
}


第五步:配置ApplicationContext.xml文件
    从下载下来的cxf开发包的samples目录下查找Service-ApplicationContext.xml拷贝至自己的项目中(此时的命名空间已不需要我们更改)
    修改 Service-ApplicationContext.xml导入文件
< import   resource ="classpath:META-INF/cxf/cxf.xml" />
< import   resource ="classpath:META-INF/cxf/cxf-extension-soap.xml" />
< import   resource ="classpath:META-INF/cxf/cxf-servlet.xml" />
配置bean和 Endpoint
完整的配置如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<bean id="productServiceBean" class="com.pb.cxfspring.dao.impl.productServiceImpl"/>
    <!--  Endpoint -->
    <jaxws:endpoint
        id="productService" address="/productService"
        implementor="com.pb.cxfspring.dao.impl.productServiceImpl">
    </jaxws:endpoint>
</beans>



第六步:配置web.xml 
从下载下来的cxf开发包的samples目录下查找web.xml打开复制粘贴里面用到的配置

第七步:启动tomcat输入http://localhost:8080/CxfWebProject/productService?wsdl
如果出现wsdl文档结构则说明服务器端Webservice配置成功
客户端
第一步:使用cxf中wsdl2java生成客户端代码
      配置环境变量:    新建CXF_HOME           C:\ProgramFiles(my)\apache-cxf-2.7.2
                                                        CLASSPATH          %CXF_HOME%\lib
                                                        PATH                     %CXF_HOME%\bin
              验证:在cmd中输入wsdl2java -v   若结果显示: wsdl2java - Apache CXF 2.7.2   则表示配置成功
                      wsdl2java工具使用:
                             cmd  --->  回车   ---》
 wsdl2java  -frontend jaxws21 -p  com.jiuzi.HelloCXF -d D:\  -client - autoNameResolution  http://localhost:8080/webservice/HelloCXF?wsdl      
结果 将会在D盘根目录下生成HelloCXF的客户端代码,将其复制到项目中便可使用            

第二步:创建工程添加jar包
第三步:配置client-ApplicationContext.xml文件(大致和服务端的配置相同)
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xmlns:customer="http://customerservice.example.com/"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
        <jaxws:client id="productServiceClient" 
            address="http://localhost:8080/CxfWebProject/productService" 
            serviceClass="com.pb.HelloCxf.ProductService">
        </jaxws:client>
    </beans>


第四步:客户端调用(两种方式)
   
//方式一:使用Spring容器
    public void clientSpring(){
        //加载客户端的定义配置
        ApplicationContext app = new ClassPathXmlApplicationContext("client-applicationContext.xml");
        //获取定义的Webservice Bean
        ProductService productService = (ProductService)app.getBean("productServiceClient");
        
        Product product  = new Product();
        product.setProId(11);
        product.setProName("jorbiee");
        product.setProPrice("234");
        //调用添加产品的方法
        productService.addProduct(product);
    }
    //方式二:java语言客户端
    public void clientJava(){
        //初始化代理工厂
                JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
                //定义服务接口类型
                factory.setServiceClass(ProductService.class);
                //设置服务地址
                factory.setAddress("http://localhost:8080/CxfWebProject/productService");
                ProductService pro = (ProductService)factory.create();
                Product product  = new Product();
                product.setProId(11);
                product.setProName("jorbiee");
                product.setProPrice("234");
                //调用添加产品的方法
                pro.addProduct(product);
    }






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值