Description
I created a broker using a config file that contained:
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="system" password="systemPassword" groups="users,admins"/>
<authenticationUser username="user" password="userPassword" groups="users"/>
<authenticationUser username="guest" password="guestPassword" groups="guests"/>
</users>
</simpleAuthenticationPlugin>
With a normal client, the following code will throw a JMSSecurityException on the connection.start(), or connection.createProducer(), or I assume on anything you do with connection. The same is true if I call createConnection with an unknown user, or a known user and invalid password
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
Connection connection = factory.createConnection();
connection.start();
When I use the QPID client though, I don't get the JMSSecurityException. In the logs I can see the exception being thrown by the broker, but it doesn't get propagated back to the client, even if I add an exception listener. The code below will continue along until it hangs on the session.CreateProducer() call.
ConnectionFactoryImpl factory = new ConnectionFactoryImpl("localhost", port, "admin", "password");
Connection connection = factory.createConnection();
connection.setExceptionListener(new ExceptionListener() {
@Override
public void onException(JMSException exception)
});
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
QueueImpl queue = new QueueImpl("queue://txqueue");
MessageProducer p = session.createProducer(queue);
I will attach a unit test that reproduces this.