Hi, can you try some newer version of broker, like 5.5.1 and see if problem is still there?
Regards -- Dejan Bosanac Senior Software Engineer | FuseSource Corp. dej...@fusesource.com | fusesource.com skype: dejan.bosanac | twitter: @dejanb blog: http://www.nighttale.net ActiveMQ in Action: http://www.manning.com/snyder/ On Thu, Mar 1, 2012 at 9:44 AM, cghersi <cristiano.ghe...@abodata.com>wrote: > Hi all, > > I'm using ActiveMQ 5.3.0 under OSGi environment from two years without any > notable issue. > > Now, I need to add authorization management for users > publishing/subscribing > to particular topics. > For this purpose, I developed a plugin which implements > org.apache.activemq.security.MessageAuthorizationPolicy: in the method > > public boolean isAllowedToConsume(ConnectionContext context, Message > message) > > where I read the incoming message, I check that the current user is allowed > to consume such a message and I return true/false accordingly to this > check. > In particular, I use text messages (short XML fragments...), so, I use this > snippet to read the current TextMessage: > > if (message instanceof TextMessage) { > String xmlText = ""; > try { > xmlText = xml.getText(); > System.out.println(xmlText); > ... //parse the message and check for permission... > } catch (JMSException e) { > ... //manage exception > } > } > > It seems to me (but maybe I'm wrong!!) that this code creates a race with > the code contained in org.apache.activemq.openwire.v5.MessageMarshaller: > > public void tightMarshal2(OpenWireFormat wireFormat, Object o, > DataOutput dataOut, BooleanStream bs) throws IOException { > ... > tightMarshalByteSequence2(info.getContent(), dataOut, bs); //here, > info.getContent() is null!! > ... > } > > and in fact I receive a NullPointerException whose stacktrace is: > > Exception in thread "BrokerService" > java.lang.NullPointerException > at > > org.apache.activemq.openwire.v5.BaseDataStreamMarshaller.tightMarshalByteSequence2(BaseDataStreamMarshaller.java:431) > at > > org.apache.activemq.openwire.v5.MessageMarshaller.tightMarshal2(MessageMarshaller.java:180) > at > > org.apache.activemq.openwire.v5.ActiveMQMessageMarshaller.tightMarshal2(ActiveMQMessageMarshaller.java:89) > at > > org.apache.activemq.openwire.v5.ActiveMQTextMessageMarshaller.tightMarshal2(ActiveMQTextMessageMarshaller.java:89) > at > > org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject2(OpenWireFormat.java:430) > at > > org.apache.activemq.openwire.v5.BaseDataStreamMarshaller.tightMarshalNestedObject2(BaseDataStreamMarshaller.java:136) > at > > org.apache.activemq.openwire.v5.MessageDispatchMarshaller.tightMarshal2(MessageDispatchMarshaller.java:105) > at > > org.apache.activemq.openwire.OpenWireFormat.marshal(OpenWireFormat.java:240) > at > > org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:166) > at > > org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:237) > at > > org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:83) > at > > org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:104) > at > org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40) > at > > org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1190) > at > > org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:779) > at > > org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:815) > at > > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown > Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > Source) > at java.lang.Thread.run(Unknown Source) > > Now, if I remove the snippet to read the XML content of the message in > isAllowedToConsume(...), all seeems returning fine, but I need such a > control!!! > > So, is there a way to correctly read a TextMessage without affecting other > consumers? > > Thank you very much and sorry for the long question!! > > Bye > cghersi > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/ActiveMQ-NullPointerException-on-broker-while-checking-for-authorization-tp4434405p4434405.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. >