FUSE Services Framework is an open source services framework based on Apache CXF. FUSE Services Framework provides a small footprint engine for creating reusable services as part of a integration solution. You can use FUSE Services Framework to service-enable new and legacy applications in an enterprise integration infrastructure.
With FUSE Services Framework you can build and develop services using a variety of container servers, languages, messaging systems, and protocols. The flexible deployment model of FUSE Services Framework supports standalone deployment and deployment in lightweight containers such as Apache Tomcat, FUSE ESB, Spring-based, and J2EE.
Key features of FUSE Services Framework include the following:
Support for web services standards — FUSE Services Framework supports a variety of web service standards including SOAP, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, and WS-Security.
Support for various front ends — FUSE Services Framework supports a variety of front end programming options, including JAX-WS web services and RESTful services, and implements the JAX-WS and JAX-RS APIs. FUSE Services Framework supports both contract first development with WSDL and code first development starting from Java.
Support for binary and legacy protocols — FUSE Services Framework supports multiple protocols including SOAP, XML, HTTP, and RESTful HTTP, and works over a variety of transports such as HTTP/S and JMS. FUSE Services Framework provides a pluggable architecture that supports both XML and non-XML type bindings, such as JSON and CORBA, in combination with any type of transport.
Ease of use — FUSE Services Framework provides simple APIs to quickly build code-first services, Maven plug-ins to make tooling integration easy, JAX-WS and JAX-RS API support, and Spring 2.0 XML for easy configuration.
Figure 1.1 summarizes the options that FUSE Services Framework supports for your front ends, data bindings, messages bindings, and transports:
FUSE Integration Designer is an Eclipse based development environment you can use to create web services based on FUSE Services Framework. FUSE Integration Designer includes a wizard to assist you in:
Creating a new web service
Configuring a web service for deployment
Deploying a web service to a server
When your web service is deployed, the wizard assists you in generating the client proxy and a sample application to test the web service. When you have completed testing, you can publish your web service to a UDDI business registry using an export wizard.
See the Fuse Integration Designer product web page for information about installing and working with FUSE Integration Designer.
Front ends provide a programming model to interact with FUSE Services Framework. A front end provides functionality through interceptors that are added to services and endpoints.
FUSE Services Framework enables you to create your front end using any of the following options:
JAX-WS — Develop your services using either a Java-first or WSDL-first development approach.
See Developing Web Services for information.
See WSDL-first JAX-WS Service Development and Java-First JAX-WS Service Development for samples that use this development approach.
JAX-RS — Develop RESTful services using the JAX-RS APIs.
See Developing RESTful Services for information.
See WSDL-first JAX-WS Service Development for a sample that uses this development approach.
JavaScript — Write your services in JavaScript, using FUSE Services Framework code generation tools to produce proxy code and support classes.
See Developing Services in JavaScript for information.
Data bindings implement the mapping between XML and Java by converting data to and from XML. Data bindings can also produce XML schema and provide support for wsdl2java code generation, although not all data bindings support all of this functionality.
In FUSE Services Framework, data binding components are responsible for mapping between XML and Java objects. Each data binding implements a particular discipline for mapping, such as JAXB or XML Beans.
There are three parts to a data binding:
Mapping the live data as it comes into and out of services
Providing XML schema based on Java objects for dynamic ?wsdl URLs and java2ws
Generating Java code from WSDL for wsdl2java and dynamic clients
All data bindings provide the live data mapping. The other two parts are optional.
Your choice of data binding is determined by the front end programming option you use. FUSE Services Framework supports multiple data bindings, including:
JAXB — The default data binding, used with JAX-WS front ends. See JAXB data bindings.
JSON — Used with JAX-RS and JavaScript front ends. See JSON data bindings.
See Basic Data Binding Concepts in
Message bindings map a service's messages to a particular protocol. FUSE Services Framework supports the following message bindings:
SOAP — This is the default binding. It maps messages to SOAP and can be used with the various WS-* modules inside FUSE Services Framework.
XML — The pure XML binding avoids serialization of a SOAP envelope and just sends a raw XML message.
HTTP — Maps a service to HTTP using RESTful semantics.
CORBA — Maps messages from CORBA services. CORBA bindings are described using a variety of WSDL extensibility elements within the WSDL binding element. In most cases, the CORBA binding description is generated automatically using the wsdl2corba utility. Usually, it is unnecessary to modify generated CORBA bindings.
See Bindings in
FUSE Services Framework uses a transport abstraction layer to hide transport-specific details from the binding and front end layers. FUSE Services Framework supports SOAP or XML over HTTP or JMS, and CORBA transports.
See Transports in
You can deploy services developed with FUSE Services Framework to the following containers:
OSGi — Once installed in an OSGi container, applications can use many of the advanced FUSE features.
Spring — You can deploy any Spring-based application into a Spring container, including a FUSE Services Framework service endpoint.
Servlet — You can deploy and run a FUSE Services Framework endpoint in any servlet container.
See Configuring and Deploying Endpoints for information about these service deployment options.
Running the FUSE Services Framework Samples describes some of the samples available to help you get started developing services with FUSE Services Framework:
WSDL-first JAX-WS Service Development describes a sample web service developed with a WSDL-first approach. This sample includes a configuration file that enables schema validation.
Java-First JAX-WS Service Development describes a sample web service developed with a Java-first approach.
JAX-RS Service Development describes a sample RESTful service developed with JAX-RS.