ServiceMix future
Jean-Baptiste Onofré, Talend
jbonofre@apache.org, 2011-11-10
Summary
SMX versions
Current state: architecture and NMR
features
Short term: SMX 4.4
Middle term: SMX 5
My Background
Jean-Baptiste Onofré
Software Architect at Talend
ASF member
PMC for Karaf and ServiceMix
Committer for ACE, Camel, Kalumet
ServiceMix ?
Apache ESB
Reliable messaging
Routing/messaging/EIP
WS/REST
WS-BPEL
Production ready feature (provisioning,
cluster, etc)
SMX 3: old stable
Very popular in production
Powered by Spring, and JBI oriented
ServiceMix JBI Components
Camel CXF
ActiveMQ
Spring
SMX 4: current stable
OSGi/Karaf powered
NMR layer
JBI backward compatible
ServiceMix JBI Components
Camel CXF
NMR JBI
ActiveMQ Camel CXF
Karaf
Pro/Cons
ServiceMix 3 ServoceMix 4
+ Great adoption + Very stable
+ Documentation - Poor documentation/website
- Only JBI and Spring +OSGi/Karaf, highly extendable
- Production tooling/features + Provisioning, failover, enterprise
feature
Short term
SMX JBI Components 2011.02:
dependencies upgrade (ActiveMQ 5.5.0,
Camel 2.8.3, CXF 2.5.0)
SMX Specs 1.9.0
SMX Utils 1.5.0
SMX 3.4: last SMX3 release, just
dependencies upgrade
Short term: SMX 4.4
Dependencies upgrade: Karaf 2.2.4,
ActiveMQ 5.5.0, Camel 2.8.3, CXF 2.4.4
Documentation/website
Improvement on build and remove the
JBI layer by default
Focus on the NMR 1.5.0 features
Current NMR status
NMR is a feature: core bus of SMX4
NMR is highly plug and play
JBI is just a subset of the NMR
NMR security
Users authentication
Endpoint access authorization
Exposed as OSGi services:
org.apache.servicemix.nmr.api.security.AuthenticationService
org.apache.servicemix.nmr.api.security.AuthorizationService
Configured as service properties:
endpoint, operation, type, roles, rank
NMR JNDI
Provide a JNDI context factory
Expose OSGi service as JNDI using
osgi:services/[/filter]
InitialContext context = new InitialContext();
ExampleService = (ExampleService)
context.lookup("osgi:services/com.example.ExampleService");
NMR Interceptors
Intercept messages between NMR
endpoints using:
– NMR events (global)
– Wires (specific from/to)
NMR Events
API receiving notifications
EndpointListener
public interface EndpointListener {
void endpointRegistered(InternalEndpoint endpoint);
void endpointUnregistered(InternalEndpoint endpoint);
}
ExchangeListener
public interface ExchangeListener {
void exchangeSent(Exchange exchange);
void exchangeDelivered(Exchange exchange);
void exchangeFailed(Exchange exchange);
}
Registration as OSGi services
NMR Audit
File or JBDC auditor
Store all exchanges including mep,
status, role, properties, in (content and
properties), out (content and
properties), fault (content and
properties)
Shell commands to manipulate the audit
log:
audit/find “status: error”
SMX5, Karaf
Karaf 3 with profiles, OSGi subsystem, etc
Karaf Cellar cluster support (especially around DOSGi)
Karaf Cave as default repository/registry
Provide a complete pro console (leveraging the new Karaf
WebConsole sub-project)
SMX5, from NMR to Camel
• Promote Camel as the premium solution for routing
(replacement of the NMR)
• Refactor most interesting NMR features to be Camel
oriented (audit, events, tracing, etc)
• Leverage Camel new features: support of async
transactions, unified statistics, improvement of the
ThreadPoolProfile for thread management, etc
SMX5, CXF
Leverage new CXF features:
• Better OSGi/Karaf integration (new shell commands,
etc), including config admin to configure CXF
workqueues
• Better management capabilities
• Better performance especially around WS-Security
• Security: STS, WS-Trust support, JAX-RS security
(OAuth 2, SAML, etc)
• Update to WS-RM 1.1
• Update to use CXF WS-Notification
Sources
Links
– servicemix.apache.org
– karaf.apache.org
– camel.apache.org
– cxf.apache.org
– activemq.apache.org
Contact
Jean-Baptiste (JB) Onofré
• jbonofre@apache.org
• http://blog.nanthrax.net
Q&A