Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In the upcoming sections, we'll take a look at each layer in turn and examine how they work together.

Purpose

...

Scope

Architectural Goals and Constraints

The This Software Architecture Document (web page) provides an architectural overview of the Apache CXF services framework .

Definitions, Acronyms and Abbreviations

seeks to build the necessary infrastructure components for services. Goals for CXF are many and include:

  • Embeddable
  • High performance
  • Easy configuration
  • Intuitive and easy to use
  • Clean separation of front-ends from the core code
  • Data formats support
  • Data bindings support
  • Protocol bindings support
  • Multiple transports support
  • Multiple Programming Languages Support
  • WS-* and related specifications support
  • Tools for code generation and WSDL validation
  • Flexible deployment

Purpose

...

Scope

This Software Architecture Document (web page) provides an architectural overview of the Apache CXF services framework.

Definitions, Acronyms and Abbreviations

  • Bus -
  • Conduit -
  • CORBA -
  • Bus -
  • Conduit -
  • CORBA - Common Object Request Broker Architecture is a standard for interoperability in heterogeneous computing environments. It enables applications to cross boundaries of different computing machines, operating systems, and programming languages. It specifies how client applications can invoke operations on server objects. – http://java.sun.com/docs/glossary.html
  • Data Binding -
  • Endpoint -
  • Fault -
  • Front-end -
  • HTTP - Hypertext Transfer Protocol. A protocol used on the Internet by web browsers to transport text and graphics. It is focuses on grabbing a page at a time, rather setting up a session. Applets also use it to download jars, classes and resources. Browsers use to download files and images, not just HTML text. – http://mindprod.com/jgloss/http.html
  • HTTPS - Hypertext Transer Protocol Secure. Used for encrypted communication between browsers and servers. All transmission of HTTP data are made with the SSL protocol. – http://mindprod.com/jgloss/https.html
  • IDL -
  • Jabber
  • JAXB - Java API For XML Data Binding. You can think of JAXB as like a hobbled, wasteful serialization scheme that reads and writes XML files. The idea is its writes a custom Java progam for you that will then write or read the XML file. You can also think of it as a way of reading XML files, getting much of the bubblegum automatically generated for you. It is my preferred way to read XML, but it still half-assed (as is everything in XML). It takes your XSD and constructs a getter and setter for each potential tag. The advantage is the getters and setters use Java types e.g. enum, int, String and XMLGregorianCalendar… not just String the way DOM does. Unfortunately, JAXB ignores the bounds specifications in your XSD schema. You must validate the XML document with your XSD separately. To use it, compose and validate your xsd file describing your XML files. – http://mindprod.com/jgloss/jaxb.html
  • JAX-RS -
  • JAX-WS -
  • Javadoc -
  • Java EE -
  • Javascript - A Web scripting language that is used in both browsers and Web servers. Like all scripting languages, it is used primarily to tie other components together or to accept user input. – http://java.sun.com/docs/glossary.html
  • JBI -
  • JiBX -
  • JMS -
  • Maven -
  • Protocol Binding -
  • REST -
  • SAAJ -
  • SDO - An acronym for Service Data Object. A ...
  • Service Model -
  • SOAP - The Simple Object Access Protocol (SOAP) uses a combination of XML-based data structuring and the Hyper Text Transfer Protocol (HTTP) to define a standardized method for invoking methods in objects distributed in diverse operating environments across the Internet. – http://java.sun.com/docs/glossary.html
  • Spring Framework -
  • Transport -
  • WSDL - WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. – http://java.sun.com/docs/glossary.html
  • WS-* -
  • XML - An acronym for Extensible markup Language. A general-purpose specification used for creating markup languages. This specification allows for the creation of custom tags in structured text files.

...

Code Block
java
java
DestinationFactoryManager dfManager = bus.getExtension(DestinationFactoryManager.class);

// Find a DestinationFactory for the SOAP HTTP transport
DestinationFactory df = dfManager.getDestinationFactory("http://schemas.xmlsoap.org/wsdl/soap/http");

// TODO: outline building of EndpointInfo
EndpointInfo endpointInfo = ...;
Destination destination = df.getDestination(endpointInfo);

MessageObservers can then be registered with Destinations. These listen for incoming messages:

Code Block
javajava

MessageObserver myObserver = ...;
destination.setMessageObserver(myObserverdf.getDestination(endpointInfo);

The most common MessageObserver used in CXF is the ChainInitiationObserver. This takes the incoming message, creates a message Exchange & PhaseInterceptorChain, then starts the chain.

Dependencies

CXF's dependencies

Tooling

...

Build Support

...

Endpoints

...

A JAX-WS example

Here's a small example of what might happen when we publish a service via the JAX-WS Endpoint.publish() method.

  1. Call to Endpoint.publish("http://localhost/service", myService)
  2. The EndpointImpl creates a Service from the myService object using the JaxWsServiceFactoryBean using the class and/or WSDL
  3. An EndpointInfo is created for the Endpoint.publish URL
  4. A JaxWsEndpointImpl is created from the EndpointInfo. This contains the JAX-WS endpoint specific interceptors
  5. The JaxWsEndpointImpl creates a Binding and Destination to listen on.

Architectural Goals and Constraints

The Apache CXF services framework seeks to build the necessary infrastructure components for services. Goals for CXF are many and include:

...

MessageObservers can then be registered with Destinations. These listen for incoming messages:

Code Block
java
java

MessageObserver myObserver = ...;
destination.setMessageObserver(myObserver);

The most common MessageObserver used in CXF is the ChainInitiationObserver. This takes the incoming message, creates a message Exchange & PhaseInterceptorChain, then starts the chain.

Dependencies

CXF's dependencies

Tooling

...

Build Support

...

Endpoints

...

A JAX-WS example

Here's a small example of what might happen when we publish a service via the JAX-WS Endpoint.publish() method.

  1. Call to Endpoint.publish("http://localhost/service", myService)
  2. The EndpointImpl creates a Service from the myService object using the JaxWsServiceFactoryBean using the class and/or WSDL
  3. An EndpointInfo is created for the Endpoint.publish URL
  4. A JaxWsEndpointImpl is created from the EndpointInfo. This contains the JAX-WS endpoint specific interceptors
  5. The JaxWsEndpointImpl creates a Binding and Destination to listen on.

...

Deployment View

...

Size and Performance

...