CXF学习记录

Posted fanjava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CXF学习记录相关的知识,希望对你有一定的参考价值。

apache CXF入门

1.1 下载

官网:cxf.apache.org

下载CXF的开发包:

技术分享图片

技术分享图片

技术分享图片

Apache CXF = Celtix + Xfire

支持多种协议:

  • SOAP1.1,1.2
  • XML/HTTP
  • CORBACommon Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WSC,c++,C#
  • 并可以与Spring进行快速无缝的整合
  • 灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面。

 

 1.2 下载

第一步:创建动态web项目

第二步:导入CXF相关jar

技术分享图片

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

 

<servlet>
      <servlet-name>cxf</servlet-name>
      <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
      <init-param>
          <param-name>config-location</param-name>
          <param-value>classpath:cxf.xml</param-value>
      </init-param>
  </servlet>
  <servlet-mapping>
      <servlet-name>cxf</servlet-name>
      <url-pattern>/service/*</url-pattern>
  </servlet-mapping>

第四步:在类路径下提供cxf.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: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">
    <!-- 引入CXF Bean定义如下,早期的版本中使用 -->
    <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>

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

 

@Service
public interface HelloService {
    public String sayHello(String name);
}

 

public class HelloServiceImpl implements HelloService {

    @Override
    public String sayHello(String name) {
        System.out.println("基于CXF开发的服务端sayHello方法被调用");
        return "hello" + name;
    }

}

第六步:在cxf.xml中注册服务

 

<bean id="helloService" class="com.javaweb.service.HelloServiceImpl" />
    
    <!-- 注册服务 -->
    <jaxws:server id="myService" address="/cxfService">
        <jaxws:serviceBean>
            <ref bean="helloService" />
        </jaxws:serviceBean>
    </jaxws:server>

 

访问wsdl文档地址为:http://ip:port/项目名/service/cxfService

1.3 入门案例(客户端开发)

 

 使用CXF提供的方式(重点)

 

第一步:创建Java项目并导入CXF相关jar

 

第二步:使用wsimport或者CXF提供wsdl2java生成本地代码,只需要生成接口文件

技术分享图片

第三步:将接口文件复制到项目中

技术分享图片

 

第四步:提供spring配置文件,注册客户端代理对象

 

    <!-- 注册CXF客户端的代理对象,通过spring框架创建这个代理对象,使用代理对象实现远程调用 -->
    <jaxws:client id="myClient" address="http://ip:port/项目名/service/cxfService?wsdl" 
                                serviceClass="com.javaweb.client.HelloService">
        
    </jaxws:client>

 

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

 

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);
    }
}

 

以上是关于CXF学习记录的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)

python小白学习记录 多线程爬取ts片段

CXF RS 漂亮的 HTTP 请求/响应日志记录

学习webservice之cxf:使用webservice实现客户端

javaweb学习路之四--cxf发布Webservice