apache CXF Service 简单使用

cxf介绍

框架官网:cxf.apache.org
支持多种协议:
SOAP1.1,1.2
XML/HTTP
CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。C,c++,C#)
并可以与Spring进行快速无缝的整合
灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面。

入门案例(服务端)

第一步:创建动态web项目

第二步:导入CXF相关jar包

apache CXF Service 简单使用_第1张图片

第三步:在web.xml中配置CXF框架提供的一个Servlet

 
  <servlet>
    <servlet-name>cxfservlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServletservlet-class>
    
    <init-param>
        <param-name>config-locationparam-name>
        <param-value>classpath:cxf.xmlparam-value>
    init-param>
  servlet>
  <servlet-mapping>
    <servlet-name>cxfservlet-name>
    <url-pattern>/service/*url-pattern>
  servlet-mapping>

第四步:在类路径下提供cxf.xml


<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://cxf.apache.org/bindings/soap 
                    http://cxf.apache.org/schemas/configuration/soap.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" />


beans>

第五步:开发一个接口和实现类

import javax.jws.WebService;

@WebService
public interface HelloService {
    public String sayHello(String name);
}
public class HelloServiceImpl implements HelloService{
    public String sayHello(String name) {
        System.out.println("基于CXF开发的服务端sayHello方法被调用了。。。。");
        return "hello " + name;
    }
}

第六步:注册服务



<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://cxf.apache.org/bindings/soap 
                    http://cxf.apache.org/schemas/configuration/soap.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="helloService" class="com.itheima.service.HelloServiceImpl"/>

    
    <jaxws:server id="myService" address="/cxfService">
        <jaxws:serviceBean>
            <ref bean="helloService"/>
        jaxws:serviceBean>
    jaxws:server>
beans>

入门案例(客户端)

    方式一:使用jdk提供的wsimport命令生成本地代码完成调用

方式二:使用CXF提供的方式

第一步:创建Java项目并导入CXF相关jar包
第二步:使用wsimport或者CXF提供wsdl2java生成本地代码,只需要生成接口文件
第三步:将接口文件复制到项目中
第四步:提供spring配置文件,注册客户端代理对象

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://cxf.apache.org/bindings/soap 
                    http://cxf.apache.org/schemas/configuration/soap.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="myClient" 
                address="http://192.168.115.87:8080/cxf_service/service/cxfService" 
                serviceClass="cn.itcast.client.HelloService">
    jaxws:client>
beans>

第五步:读取spring配置文件,创建spring工厂,从工厂中获取代理对象,实现远程调用

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("cxf.xml");
        HelloService proxy = (HelloService) ctx.getBean("myClient");
        String ret = proxy.sayHello("test");
        System.out.println(ret);
    }
}

你可能感兴趣的:(apache CXF Service 简单使用)