Red Hat JBoss Fuse

JBI Development Guide

Using the legacy Java Business Integration framework

Version 6.1

Legal Notice

Trademark Disclaimer

The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Apache, ServiceMix, Camel, CXF, and ActiveMQ are trademarks of Apache Software Foundation. Any other names contained herein may be trademarks of their respective owners.

Legal Notice

Third Party Acknowledgements

One or more products in the Red Hat JBoss Fuse release includes third party components covered by licenses that require that the following documentation notices be provided:
  • JLine (http://jline.sourceforge.net) jline:jline:jar:1.0
    License: BSD (LICENSE.txt) - Copyright (c) 2002-2006, Marc Prud'hommeaux
    All rights reserved.
    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
    • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    • Neither the name of JLine nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Stax2 API (http://woodstox.codehaus.org/StAX2) org.codehaus.woodstox:stax2-api:jar:3.1.1
    Copyright (c) <YEAR>, <OWNER> All rights reserved.
    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
    • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • jibx-run - JiBX runtime (http://www.jibx.org/main-reactor/jibx-run) org.jibx:jibx-run:bundle:1.2.3
    License: BSD (http://jibx.sourceforge.net/jibx-license.html) Copyright (c) 2003-2010, Dennis M. Sosnoski.
    All rights reserved.
    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
    • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    • Neither the name of JiBX nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • JavaAssist (http://www.jboss.org/javassist) org.jboss.javassist:com.springsource.javassist:jar:3.9.0.GA:compile
  • HAPI-OSGI-Base Module (http://hl7api.sourceforge.net/hapi-osgi-base/) ca.uhn.hapi:hapi-osgi-base:bundle:1.2
    License: Mozilla Public License 1.1 (http://www.mozilla.org/MPL/MPL-1.1.txt)
01 Dec 2014

Abstract

Java Business Integration is a legacy container framework which uses the Normalized Message Router (NMR) as a message bus for transferring normalized XML messages between application components.
I. Introducing Java Business Integration
1. Introduction to JBI
2. The Component Framework
3. The Normalized Message Router
4. Management Structure
5. Clustering JBI Endpoints
6. Using the JBI Ant Tasks
6.1. Using the tasks as commands
6.2. Using the tasks in build files
7. Building JBI Components Using Maven
8. Deploying JBI Endpoints Using Maven
8.1. Setting up a Red Hat JBoss Fuse JBI project
8.2. A service unit project
8.3. A service assembly project
A. Using the JBI Console Commands
II. File Binding Component
9. Introduction to the File Binding Component
10. Using Poller Endpoints
10.1. Introduction to poller endpoints
10.2. Basic configuration
10.3. Configuring poller endpoints interactions with the file system
10.4. Configuring the Polling Interval
10.5. File locking
10.6. File filtering
11. Using Sender Endpoints
11.1. Introduction to sender endpoints
11.2. Basic configuration
11.3. Configuring a sender endpoint's interaction with the file system
12. File Marshalers
B. Poller Endpoint Properties
C. Sender Endpoint Properties
III. JMS Binding Component
13. Introduction to the Red Hat JBoss Fuse JMS Binding Component
14. Configuring the Connection Factory
14.1. Using Apache ActiveMQ Connection Factories
14.2. Using JNDI
14.3. Using a Spring Bean
15. Creating a Consumer Endpoint
15.1. Introduction to Consumer Endpoints
15.2. Using the Generic Endpoint or the SOAP Endpoint
15.2.1. Basic Configuration
15.2.2. Listener Containers
15.2.3. Advanced Configuration
15.2.4. SOAP Specific Configuration
15.3. Using the JCA Consumer Endpoint
15.4. Configuring How Replies are Sent
15.4.1. Configuring the Reply Destination
15.4.2. Configuring the Qualities of Service
15.4.3. Setting Custom JMS Properties
16. Creating a Provider Endpoint
16.1. Introduction to Provider Endpoints
16.2. Basic Configuration
16.3. Configuring How Responses are Received
16.4. Advanced Provider Configuration
16.4.1. JMS Message Qualities of Service
16.4.2. JMS Message Optimization
16.4.3. SOAP Specific Configuration
17. Making Endpoints Stateful
18. Working with Message Marshalers
18.1. Consumer Marshalers
18.2. Provider Marshalers
19. Implementing Destination Resolving Logic
19.1. Using a Custom Destination Chooser
19.2. Using a Custom Destination Resolver
D. Consumer Endpoint Properties
D.1. Common Properties
D.2. Properties Specific to Generic Consumers and SOAP Consumers
D.3. Properties Specific to a JCA Consumer
E. Provider Endpoint Properties
E.1. Common Properties
E.2. Properties Specific to SOAP Providers
IV. CXF Binding Component
20. Introduction to the Apache CXF Binding Component
21. Introducing WSDL Contracts
21.1. Structure of a WSDL document
21.2. WSDL elements
21.3. Designing a contract
22. Defining Logical Data Units
22.1. Mapping data into logical data units
22.2. Adding data units to a contract
22.3. XML Schema simple types
22.4. Defining complex data types
22.4.1. Defining data structures
22.4.2. Defining arrays
22.4.3. Defining types by extension
22.4.4. Defining types by restriction
22.4.5. Defining enumerated types
22.5. Defining elements
23. Defining Logical Messages Used by a Service
24. Defining Your Logical Interfaces
25. Using HTTP
25.1. Adding a Basic HTTP Endpoint
25.2. Consumer Configuration
25.3. Provider Configuration
25.4. Using the HTTP Transport in Decoupled Mode
26. Using JMS
26.1. Using SOAP/JMS
26.1.1. Basic configuration
26.1.2. JMS URIs
26.1.3. WSDL extensions
26.2. Using WSDL to configure JMS
26.2.1. Basic JMS configuration
26.2.2. JMS client configuration
26.2.3. JMS provider configuration
26.3. Using a Named Reply Destination
27. Introduction to the Apache CXF Binding Component
28. Consumer Endpoints
29. Provider Endpoints
30. Using MTOM to Process Binary Content
31. Working with the JBI Wrapper
32. Using Message Interceptors
33. Configuring the Endpoints to Load Apache CXF Runtime Configuration
34. Transport Configuration
34.1. Using the JMS configuration bean
34.2. Configuring the Jetty Runtime
35. Deploying WS-Addressing
35.1. Introduction to WS-Addressing
35.2. WS-Addressing Interceptors
35.3. Enabling WS-Addressing
35.4. Configuring WS-Addressing Attributes
36. Enabling Reliable Messaging
36.1. Introduction to WS-RM
36.2. WS-RM Interceptors
36.3. Enabling WS-RM
36.4. Configuring WS-RM
36.4.1. Configuring Apache CXF-Specific WS-RM Attributes
36.4.2. Configuring Standard WS-RM Policy Attributes
36.4.3. WS-RM Configuration Use Cases
36.5. Configuring WS-RM Persistence
F. Consumer Endpoint Properties
G. Provider Endpoint Properties
H. Using the Maven OSGi Tooling
H.1. Setting up a Red Hat JBoss Fuse OSGi project
H.2. Configuring the Bundle Plug-In
Index