CXF目前是 apache下面的一个顶级开源项目, CXF是从 Celtix和 XFire两个项目合并而得到的一个新项目。
早先 CXF是 apache下面的一个孵化项目,在 08年的时候升级成为了顶级项目。 CXF主要实现了 JAX-WS和 JAX-RS两个协议 API,并且支持 SOAP, XML/HTTP, RESTful HTTP, CORBA协议绑定,并且可以通过 HTTP, JMS, JBI进行传输。
CXF包含一系列特性,其中最主要的特性包括
1. 对 web service规范的支持, CXF supports a variety of web service standards including SOAP, the WS-I Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy, WS-SecureConverstation, and WS-Trust (partial).
2. 前端, CXF支持很多前端开发模型
CXF支持 contract first(wsdl first)和 code first(java first)两种开发模式。
General
- High Performance
- Extensible
- Intuitive & Easy to Use
Support for Standards
JSR Support
- JAX-WS - Java API for XML-Based Web Services (JAX-WS) 2.0 - JSR-224
- Web Services Metadata for the Java Platform - JSR-181
- JAX-RS - The Java API for RESTful Web Services - JSR-311
- SAAJ - SOAP with Attachments API for Java (SAAJ) - JSR-67
WS-* and related Specifications Support
- Basic support: WS-I Basic Profile 1.1
- Quality of Service: WS-Reliable Messaging
- Metadata: WS-Policy, WSDL 1.1 - Web Service Definition Language
- Communication Security: WS-Security, WS-SecurityPolicy, WS-SecureConversation, WS-Trust (partial support)
- Messaging Support: WS-Addressing, SOAP 1.1, SOAP 1.2, Message Transmission Optimization Mechanism (MTOM)
Multiple Transports, Protocol Bindings, Data Bindings, and Formats
- Transports: HTTP, Servlet, JMS, In-VM and many others via the Camel transport for CXF such as SMTP/POP3, TCP and Jabber
- Protocol Bindings: SOAP, REST/HTTP, pure XML
- Data bindings: JAXB 2.x, Aegis, Apache XMLBeans, Service Data Objects (SDO), JiBX (under development)
- Formats: XML Textual, JSON, FastInfoset
- Extensibility API allows additional bindings for CXF, enabling additional message format support such as CORBA/IIOP
Flexible Deployment
- Lightweight containers: deploy services in Jetty, Tomcat or Spring-based containers
- JBI integration: deploy as a service engine in a JBI container such as ServiceMix, OpenESB or Petals
- Java EE integration: deploy services in Java EE application servers such as Apache Geronimo, JOnAS, Redhat JBoss, OC4J, Oracle WebLogic, and IBM WebSphere
- Standalone Java client/server
Support for Multiple Programming Languages
- Full support for JAX-WS 2.x client/server programming model
- JAX-WS 2.x synchronous, asynchronous and one-way API's
- JAX-WS 2.x Dynamic Invocation Interface (DII) API
- JAX-RS for RESTful clients
- Support for wrapped and non-wrapped styles
- XML messaging API
- Support for JavaScript and ECMAScript 4 XML (E4X) - both client and server
- Support for CORBA
- Support for JBI with ServiceMix
Tooling
- Generating Code: WSDL to Java, WSDL to JavaScript, Java to JavaScript
- Generating WSDL: Java to WSDL,XSD to WSDL, WSDL to XML, IDL to WSDL
- Adding Endpoints: WSDL to SOAP, WSDL to CORBA, WSDL to service
- Generating Support Files: WSDL to IDL
- Validating Files: WSDL Validation