I've created a new BindingRegistry SPI that is currently only used by JMSServerManagerImpl. Previously JMSServerManagerImpl was hardcoded to deploy all of its factory and destination bindings into JNDI. If you wanted to use hornetq-jms.xml files to configure HornetQ you were required to have a JNDI server running.
While JMSServerManagerImpl remains backward compatible, I added the ability to provide your own BindingRegistry implementations, i.e. a simple Map, or a Spring context.
I also added some Embedded wrapper classes that allow you to use hornetq configuration files to configure everything, yet bootstrap crazily simply within code. I don't know whether to make these classes public (they are used by the Spring integration at the moment)
The classes are:
org.hornetq.core.server.embedded.EmbeddedHornetQ if you want to embed a core HornetQ instance
org.hornetq.jms.server.embedded.EmbeddedJms. This class will create a MapBindingRegistry and bind to a simple map by default instead of defaulting to JNDI.
These classes, by default, will look for thse config files in your classpath
hornetq-configuration.xml
hornetq-jms.xml
hornetq-users.xml
hornetq-configuration.xml and hornetq-jms.xml classpaths can be changed, although I haven't figured out yet how to change hornetq-users.xml
So, for most cases, embedded HornetQ is as simple as doing:
EmbeddedJMS jms = new EmbeddedJMS();
jms.start();
ConnectionFactory factory = jms.lookup("ConnectionFactory");