On Thu, 2010-05-20 at 02:21 -0700, jolly.Wang wrote: > the version : ActiveMQ 5.3.0, activemq-cpp 3.1.0 > > When I use a c++ client to connect the broker, the broker got these > exceptions: > > --------------------------------------------------------------------------------------------- > > java.lang.SecurityException: User name or password is invalid. > at > org.apache.activemq.security.JaasAuthenticationBroker.addConnection(JaasAuthenticationBroker.java:83) > at > org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:82) > at > org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:89) > at > org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:666) > at > org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:83) > at > org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:134) > at > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:297) > at > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:175) > at > org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) > at > org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) > at > org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210) > at > org.apache.activemq.transport.TransportLogger.onCommand(TransportLogger.java:114) > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84) > at > org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203) > at > org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185) > at java.lang.Thread.run(Unknown Source) > > --------------------------------------------------------------------------------------------- > > but when i use the same username and password in a JMS client, that > situation is ok! > > the activemq.xml's main part as following: > > ---------------------------------------------------------------------------------- > <transportConnectors> > <transportConnector name="openwire" > uri="tcp://172.20.2.21:61616?trace=true"/> > </transportConnectors> > > <jaasAuthenticationPlugin configuration="activemq-domain" /> > > <authorizationPlugin> > <map> > <authorizationMap> > <authorizationEntries> > <authorizationEntry topic=">" read="admins" write="admins" > admin="admins" /> > <authorizationEntry queue=">" read="admins" write="admins" > admin="admins" /> > </authorizationEntries> > </authorizationMap> > </map> > </authorizationPlugin> > > ---------------------------------------------------------------------------------- > > cms::Connection* ActiveMQConnectionFactory::createConnection( > const std::string& username, > const std::string& password ) > throw ( cms::CMSException ) > > ---------------------------------------------------------------------------------- > bool AMQClient::connectBroker(const string& uri, const string& username, > const string& password) > { > try{ > auto_ptr<ConnectionFactory> connectionFactory( > ConnectionFactory::createCMSConnectionFactory(uri) ); > connection = connectionFactory->createConnection(username, > password); > ... > > calls like this: > connection = connectionFactory->createConnection("admin", "hello"); > ------------------------------------------------------------------------------------------------ > > Does activemq-cpp's ConnectionFactory::createConnection() support JAAS > authentication, or I use a activemq-cpp in a wrong way? Thanks a lot!!
AFAIK it should work, I'd suggest you try the latest release of AMQCPP 3.1.2 and if that doesn't work then open an issue and attach a test case and broker config. Regards Tim. -- Tim Bish Open Source Integration: http://fusesource.com ActiveMQ in Action: http://www.manning.com/snyder/ Follow me on Twitter: http://twitter.com/tabish121 My Blog: http://timbish.blogspot.com/