activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Holger_ <sihls...@googlemail.com>
Subject SecurityException not delegated to Camel?
Date Fri, 30 Jul 2010 12:04:46 GMT

Hi,

I started this topic on the camel-user list but was referred to this list:
http://camel.465427.n5.nabble.com/JMS-Transactions-not-handling-SecurityException-tp2256668p2256668.html

I have a very simple Camel route consuming messages from an Active MQ queue
and sending them to another one. The whole route should be transactional,
i.e. either the message is consumed and sent successfully or this process is
rolled back:

from("activemq:queue:foo")
    .transacted() 
    .to("activemq:queue:bar2"); 

foo is accessible by the user but bar2 is not accessible. When I send a
message to the foo queue I get the following output:

DEBUG DefaultMessageListenerContainer-1
org.apache.camel.component.jms.EndpointMessageListener -
Endpoint[activemq://queue:foo] consumer receiving JMS message:
ActiveMQTextMessage {commandId = 6, responseRequired = false, messageId =
ID:HOLGERSNB-2175-1280308413512-2:61:1:1:1, originalDestination = null,
originalTransactionId = null, producerId =
ID:HOLGERSNB-2175-1280308413512-2:61:1:1, destination = queue://foo,
transactionId = TX:ID:HOLGERSNB-2175-1280308413512-2:61:1, expiration = 0,
timestamp = 1280308435389, arrival = 0, brokerInTime = 1280308435389,
brokerOutTime = 1280308435405, correlationId = null, replyTo = null,
persistent = true, type = null, priority = 4, groupID = null, groupSequence
= 0, targetConsumerId = null, compressed = false, userID = null, content =
null, marshalledProperties = null, dataStructure = null, redeliveryCounter =
0, size = 1039, properties = null, readOnlyProperties = true, readOnlyBody =
true, droppable = false, text = Hello World} 
DEBUG DefaultMessageListenerContainer-1
org.apache.camel.spring.spi.TransactionErrorHandler - Transaction begin
(0x1ca1837) for ExchangeId: ID:HOLGERSNB-2175-1280308413512-2:61:1:1:1 
DEBUG DefaultMessageListenerContainer-1
org.apache.camel.processor.SendProcessor - >>>>
Endpoint[activemq://queue:bar2] Exchange[JmsMessage: ActiveMQTextMessage
{commandId = 6, responseRequired = false, messageId =
ID:HOLGERSNB-2175-1280308413512-2:61:1:1:1, originalDestination = null,
originalTransactionId = null, producerId =
ID:HOLGERSNB-2175-1280308413512-2:61:1:1, destination = queue://foo,
transactionId = TX:ID:HOLGERSNB-2175-1280308413512-2:61:1, expiration = 0,
timestamp = 1280308435389, arrival = 0, brokerInTime = 1280308435389,
brokerOutTime = 1280308435405, correlationId = null, replyTo = null,
persistent = true, type = null, priority = 4, groupID = null, groupSequence
= 0, targetConsumerId = null, compressed = false, userID = null, content =
null, marshalledProperties = null, dataStructure = null, redeliveryCounter =
0, size = 1039, properties = null, readOnlyProperties = true, readOnlyBody =
true, droppable = false, text = Hello World}] 
DEBUG DefaultMessageListenerContainer-1
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate - Executing
callback on JMS Session: ActiveMQSession
{id=ID:HOLGERSNB-2175-1280308413512-2:64:1,started=false} 
WARN VMTransport org.apache.activemq.broker.TransportConnection.Service -
Async error occurred: java.lang.SecurityException: User user is not
authorized to write to: queue://bar2 
java.lang.SecurityException: User user is not authorized to write to:
queue://bar2 
        at
org.apache.activemq.security.AuthorizationBroker.addProducer(AuthorizationBroker.java:159)

        at
org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:97) 
        at
org.apache.activemq.broker.TransportConnection.processAddProducer(TransportConnection.java:494)

        at
org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:105) 
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:300) 
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:178) 
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) 
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) 
        at
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:210) 
        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) 
DEBUG DefaultMessageListenerContainer-1
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate - Sending
JMS message to: queue://bar2 with message: ActiveMQTextMessage {commandId =
0, responseRequired = false, messageId = null, originalDestination = null,
originalTransactionId = null, producerId = null, destination = null,
transactionId = null, expiration = 0, timestamp = 0, arrival = 0,
brokerInTime = 0, brokerOutTime = 0, correlationId = null, replyTo = null,
persistent = true, type = null, priority = 4, groupID = null, groupSequence
= 0, targetConsumerId = null, compressed = false, userID = null, content =
null, marshalledProperties = null, dataStructure = null, redeliveryCounter =
0, size = 0, properties = {CamelJmsDeliveryMode=2}, readOnlyProperties =
false, readOnlyBody = false, droppable = false, text = Hello World} 
WARN VMTransport org.apache.activemq.broker.TransportConnection.Service -
Async error occurred: java.lang.SecurityException: User user is not
authorized to write to: queue://bar2 
java.lang.SecurityException: User user is not authorized to write to:
queue://bar2 
        at
org.apache.activemq.security.AuthorizationBroker.send(AuthorizationBroker.java:182) 
        at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:133) 
        at
org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:446)

        at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:631) 
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:300) 
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:178) 
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) 
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) 
        at
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:210) 
        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) 
DEBUG DefaultMessageListenerContainer-1
org.apache.camel.spring.spi.TransactionErrorHandler - Transaction commit
(0x1ca1837) for ExchangeId: ID:HOLGERSNB-2175-1280308413512-2:61:1:1:1 
WARN VMTransport org.apache.activemq.broker.TransportConnection.Service -
Async error occurred: java.lang.IllegalStateException: Cannot remove a
producer that had not been registered:
ID:HOLGERSNB-2175-1280308413512-2:64:1:1 
java.lang.IllegalStateException: Cannot remove a producer that had not been
registered: ID:HOLGERSNB-2175-1280308413512-2:64:1:1 
        at
org.apache.activemq.broker.TransportConnection.processRemoveProducer(TransportConnection.java:515)

        at org.apache.activemq.command.RemoveInfo.visit(RemoveInfo.java:78) 
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:300) 
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:178) 
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) 
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) 
        at
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:210) 
        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) 
INFO DefaultMessageListenerContainer-1
org.springframework.jms.listener.DefaultMessageListenerContainer - Setup of
JMS message listener invoker failed for destination 'bar2' - trying to
recover. Cause: User user is not authorized to read from: queue://bar2 
INFO DefaultMessageListenerContainer-1
org.springframework.jms.listener.DefaultMessageListenerContainer -
Successfully refreshed JMS Connection 
INFO DefaultMessageListenerContainer-2
org.springframework.jms.listener.DefaultMessageListenerContainer - Setup of
JMS message listener invoker failed for destination 'bar2' - trying to
recover. Cause: User user is not authorized to read from: queue://bar2 
INFO DefaultMessageListenerContainer-2
org.springframework.jms.listener.DefaultMessageListenerContainer -
Successfully refreshed JMS Connection 


The problem is that the message is consumed from the foo-queue and not
rolled back within the transaction (the transaction commits before sending
the message to the bar-queue). This seems to happen because the
SecurityException exception is not propagated to Camel. 

Is there anything I am doing wrong? 

Thanks, 
Holger 
-- 
View this message in context: http://old.nabble.com/SecurityException-not-delegated-to-Camel--tp29305408p29305408.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message