JMS with Red Hat JBoss A-MQ not working when jaas realm is enabled.

346 views
Skip to first unread message

Harald Jensås

unread,
Sep 14, 2015, 8:29:57 AM9/14/15
to Gatling User Group
I have a simulation with this JMSConfiguration:

    val jmsConfig = jms
        .connectionFactoryName("ConnectionFactory")
        .url("tcp://amq1.lnx.example.com:61616")
        .credentials("admin", "password")
        .contextFactory(classOf[ActiveMQInitialContextFactory].getName)
        .listenerCount(1)
        .usePersistentDeliveryMode

While "jaasAuthenticationPlugin" is enabled in activemq.xml this fails with the exception posted below indicating that the username is "null" or password is invalid.

In the broker logs I also see:
2015-09-14 13:45:46,359 | INFO  | e[amq1] Task-153 | TransportConnection              | emq.broker.TransportConnection$3 1076 | 121 - org.apache.activemq.activemq-osgi - 5.9.0.redhat-611442 | Stopping tcp://192.168.102.11:35546 because Failed with SecurityException: User name [null] or password is invalid.


In the docs I can see the option: "disableAnonymousConnect  optional, by default, connection won’t use the above credentials".
If I try to change my jmsConfig to:
    val jmsConfig = jms
        .connectionFactoryName("ConnectionFactory")
        .url("tcp://amq1.lnx.example.com:61616")
        .credentials("admin", "password")
        .contextFactory(classOf[ActiveMQInitialContextFactory].getName)
        .listenerCount(1)
        .usePersistentDeliveryMode
        .
disableAnonymousConnect

I get this error:
4:25:51.557 [ERROR] i.g.c.ZincCompiler$ - /home/gatling/gatling-charts-highcharts-bundle-2.1.7/user-files/simulations/amq/AMQInboundOutboundSimulation.scala:17: value disableAnonymousConnect is not a member of io.gatling.jms.JmsProtocolBuilder
possible cause: maybe a semicolon is missing before `value disableAnonymousConnect'?




---------------------------------------
[ERROR] [09/14/2015 13:25:46.126]
[GatlingSystem-akka.actor.default-dispatcher-3]
[akka://GatlingSystem/user/jmsReqReply-3] User name [null] or password
is invalid.
akka.actor.ActorInitializationException: exception during creation
        at akka.actor.ActorInitializationException$.apply(Actor.scala:166)
        at akka.actor.ActorCell.create(ActorCell.scala:596)
        at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456)
        at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
        at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263)
        at akka.dispatch.Mailbox.run(Mailbox.scala:219)
        at akka.dispatch.ForkJoinExecutorConfigurator
$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at scala.concurrent.forkjoin.ForkJoinPool
$WorkQueue.runTask(ForkJoinPool.java:1339)
        at
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: javax.jms.JMSSecurityException: User name [null] or password
is invalid.
        at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:52)
        at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1419)
        at
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1520)
        at
org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:527)
        at
io.gatling.jms.client.SimpleJmsClient.<init>(SimpleJmsClient.scala:66)
        at io.gatling.jms.JmsReqReplyAction.<init>(JmsReqReplyAction.scala:54)
        at io.gatling.jms.JmsReqReplyActionBuilder$$anonfun$build
$1.apply(JmsReqReplyActionBuilder.scala:31)
        at io.gatling.jms.JmsReqReplyActionBuilder$$anonfun$build
$1.apply(JmsReqReplyActionBuilder.scala:31)
        at akka.actor.TypedCreatorFunctionConsumer.produce(Props.scala:343)
        at akka.actor.Props.newActor(Props.scala:252)
        at akka.actor.ActorCell.newActor(ActorCell.scala:552)
        at akka.actor.ActorCell.create(ActorCell.scala:578)
        ... 9 more
Caused by: java.lang.SecurityException: User name [null] or password is
invalid.
        at
org.apache.activemq.security.JaasAuthenticationBroker.addConnection(JaasAuthenticationBroker.java:80)
        at
org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:102)
        at
org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:808)
        at
org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:79)
        at
org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:333)
        at org.apache.activemq.broker.TransportConnection
$1.onCommand(TransportConnection.java:187)
        at
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
        at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
        at java.lang.Thread.run(Thread.java:745)
Caused by: javax.security.auth.login.LoginException: Username can not be
null
        at
org.apache.karaf.jaas.modules.properties.PropertiesLoginModule.login(PropertiesLoginModule.java:99)
        at
org.apache.karaf.jaas.boot.ProxyLoginModule.login(ProxyLoginModule.java:83)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.security.auth.login.LoginContext.invoke(LoginContext.java:762)
        at javax.security.auth.login.LoginContext.access
$000(LoginContext.java:203)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:690)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:688)
        at java.security.AccessController.doPrivileged(Native Method)
        at
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:687)
        at javax.security.auth.login.LoginContext.login(LoginContext.java:595)
        at
org.apache.activemq.security.JaasAuthenticationBroker.addConnection(JaasAuthenticationBroker.java:73)
        ... 13 more

Harald Jensås

unread,
Sep 15, 2015, 9:54:47 AM9/15/15
to Gatling User Group
This has been solved.

io.gatling.core.config.Credentials needs to be included for credentials to work.

import io.gatling.core.config.Credentials

And the jmsConfig:


    val jmsConfig = jms
        .connectionFactoryName("ConnectionFactory")
        .url("tcp://amq1.lnx.example.com:61616")
        .credentials("admin", "password")
        .disableAnonymousConnect

        .contextFactory(classOf[ActiveMQInitialContextFactory].getName)
        .listenerCount(1)
        .usePersistentDeliveryMode
        .messageMatcher(idMatcher)


Abhinav Gogna

unread,
Sep 16, 2015, 1:40:50 PM9/16/15
to Gatling User Group
Thanks for providing the solution. Will be helpful in future.

Naresh Yerneni

unread,
Jan 15, 2016, 11:25:01 AM1/15/16
to Gatling User Group
 facing the same issue. The proposed solution to resolve the credentials does not work for me still.Wondering if the gatling test framework version you are using is 2.1.7 ?
Reply all
Reply to author
Forward
0 new messages