Some specific explaination, per your code would be nice.  Like what steps you
are doing, and how it works with the ActiveMQ plugin model.  I've never used
Spring.  I've never used a plugin.  I understand fundamental core Java,
period.
The basic security model I was envisioning using was to have the topic/queue
names include a UUID...if one doesn't know the queue name, including UUID,
then one can't access the queue.    The client is C++.  The backend logic,
per my project, is done with JAVA Servlets/Struts, and a set of tables in a
MySQL DB.

As I stated originally, I want to be able to only have a few "entities",
authenticated by Username and Password, be able to Create and Destroy Topics
and Queues.  Either manually or programmatically.

For example how could I set ActiveMQ up so that only two specific usernames
and passwords would give topic/queue create/destroy access?

You need to write you own class extends BrokerPluginSupport class. Such classes defined as plugins for ActiveMQ broker will intercept all events in broker lifecycle, so you can read event parameters (username and password for example) and allow this event by calling super. or restrict them by raising exception.

For defining plugins for ActiveMQ broker you need read more about ActiveMQ xml configuration in http://activemq.com/site/xml-configuration.html

Next you need to select raw Spring or XBeans Spring configuration manner. In first case you can write this simple configuration:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd";>
<beans>   
<bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop">
                <property name="brokerName" value="m0"/>
                <property name="persistent" value="true"/>
                <property name="transportConnectorURIs">
                        <list>
                                <value>tcp://localhost:5000</value>
                        </list>
                </property>
                <property name="plugins">
                        <list>
                                <bean class="SimplePlugin"/>
                        </list>
                </property>
        </bean>
</beans>

For starting this configuration (it can be named "context" by Spring users) you need to write and run this class:

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Startup {

public static void main(String[] args) throws InterruptedException {

                AbstractApplicationContext ctx =
new FileSystemXmlApplicationContext(new String []{"context.xml"});
                ctx.registerShutdownHook();
                Thread.sleep(Long.MAX_VALUE);
        }

}

So, broker will work until pressing Ctl+C

Also you need to write class SimplePlugin extends BrokerPluginSupport and overrides some of it's methods.

XBeans Spring configuration is used by default and in this case you don't need write you own Startup class and can use activemq.sh/activemq.bat. In this case plugins connecting described in http://activemq.com/site/security.html

Reply via email to