...
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 | ||||
---|---|---|---|---|
| ||||
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 | ||
---|---|---|
java | java | 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
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.
- Call to
Endpoint.publish("http://localhost/service", myService)
- The
EndpointImpl
creates a Service from themyService
object using theJaxWsServiceFactoryBean
using the class and/or WSDL - An
EndpointInfo
is created for theEndpoint.publish
URL - A
JaxWsEndpointImpl
is created from theEndpointInfo
. This contains the JAX-WS endpoint specific interceptors - The
JaxWsEndpointImpl
creates aBinding
andDestination
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 | ||||
---|---|---|---|---|
| ||||
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
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.
- Call to
Endpoint.publish("http://localhost/service", myService)
- The
EndpointImpl
creates a Service from themyService
object using theJaxWsServiceFactoryBean
using the class and/or WSDL - An
EndpointInfo
is created for theEndpoint.publish
URL - A
JaxWsEndpointImpl
is created from theEndpointInfo
. This contains the JAX-WS endpoint specific interceptors - The
JaxWsEndpointImpl
creates aBinding
andDestination
to listen on.
...
Deployment View
...
Size and Performance
...