How do I share a single object between different service units?
You need to register your singleton bean inside ServiceMix' internal JNDI registry. This is done by modifying the conf/jndi.xml
configuration file:
<util:map id="jndiEntries"> ... <entry key="mySingletonJndiName"> <bean .... Put your singleton bean here ... /> </entry> </util:map>
Then, in your xbean.xml
files for your SUs, you can use:
<jee:jndi-lookup id="mySingletonId" jndi-name="mySingletonJndiName" />
Don't forget to specify the jee namespace in the xbean.xml:
<?xml version="1.0"?> <beans <your other definitions> xmlns:jee="http://www.springframework.org/schema/jee"> ... </beans>
Important note
To use the JNDI lookup capability you need to add an additional dependency to your SU's pom.xml file.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-remoting</artifactId> <version>2.0.8</version> <!-- replace with another version if needed --> </dependency>
This will add the spring-remoting.jar as a dependency. This is needed because the jee namespace is defined in there.