<broker >

。。。
<plugins>
。。。

<simpleAuthenticationPlugin>
<users>
<authenticationUser username=”abcd” password=”1234″
groups=”users,admins,admin”/>
<authenticationUser username=”guest” password=”password” groups=”guests”/>
</users>
</simpleAuthenticationPlugin>

<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=”kkk” read=”admins” write=”admins” admin=”admins” />
<authorizationEntry queue=”>” read=”admins” write=”admins” admin=”admins” />
<authorizationEntry queue=”USERS.>” read=”users” write=”users” admin=”users” />
<authorizationEntry queue=”GUEST.>” read=”guests” write=”guests,users” admin=”guests,users” />

<authorizationEntry topic=”>” read=”admins” write=”admins” admin=”admins” />
<authorizationEntry topic=”USERS.>” read=”users” write=”users” admin=”users” />
<authorizationEntry topic=”GUEST.>” read=”guests” write=”guests,users” admin=”guests,users” />

<authorizationEntry topic=”ActiveMQ.Advisory.>” read=”guests,users” write=”guests,users” admin=”guests,users”/>

</authorizationEntries>
<tempDestinationAuthorizationEntry>
<tempDestinationAuthorizationEntry read=”admin” write=”admin” admin=”admin”/>
</tempDestinationAuthorizationEntry>
</authorizationMap>
</map>
</authorizationPlugin>

。。。

</plugins>

。。。

</broker >

当按照官方的说明合理配置后,仍然出现SecurityException 如下显示时:

WARN  TransportConnection            - Failed to add Connection
java.lang.SecurityException: User name or password is invalid.
at org.apache.activemq.security.SimpleAuthenticationBroker.addConnection(SimpleAuthenticationBroker.java:52)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:81)
at org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:8 8)
at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:662)
at org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:86)
at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:125)
at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:6 8)
at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
at java.lang.Thread.run(Thread.java:619)

经过我屏闭了Camel,Jetty,CommandAgent等说是经常出现这种EXCEPTION之后,仍然出现,而且出现在TransportConnection, 于我便尝试在   <transportConnectors>附近寻找,

第一眼让我感觉到discoveryUri=”multicast://default” 可能存在问题,因为这有可能在广播式查找的同时,会找到自己,由于本身有安全机制,自然无法用通用的方式进行连接,于是去掉这个说明后,也就成了以下这样:

<!– The transport connectors ActiveMQ will listen to –>
<transportConnectors>
<transportConnector
name=”openwire” uri=”tcp://localhost:61616″/>
<transportConnector name=”ssl” uri=”ssl://localhost:61617″/>
<transportConnector name=”stomp” uri=”stomp://localhost:61613″/>
<transportConnector name=”xmpp” uri=”xmpp://localhost:61222″/>

</transportConnectors>

然后直接启动AMQ就正常运行了,然后如果从另一B点连接到这个A点时就需要在B点的配置文件里面加上

<networkConnectors>

….

<networkConnector
userName=”abcd”
password=”1234″

networkTTL=”5″
name=”thename”
uri=”static://(tcp://host:61616)”/>
……
</networkConnectors>

摸索了一早上,终于成功出来了。

continue reading.....