You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Holger_ <si...@googlemail.com> on 2010/07/30 14:04:46 UTC

SecurityException not delegated to Camel?

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.


Re: SecurityException not delegated to Camel?

Posted by Holger_ <si...@googlemail.com>.
Hi Gary,

configuring sync send works great and results in the expected behaviour of
Camel (i.e. the transaction is rolled back). 

Thanks,
Holger



Gary Tully wrote:
> 
> If you can configure sync send on the connection factory, can do it
> via the brokerURL:
>   vm://localhost?jms.alwaysSyncSend=true
> then the send exception will bubble back up to camel. The exception on
> creating the producer will still be there as that is always send
> async.
> A standard javax.jms.ExceptionListener would be called if one was
> registered when the async exception are received from the broker.
> 
> On 30 July 2010 13:04, Holger_ <si...@googlemail.com> wrote:
>>
>> 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.
>>
>>
> 
> 
> 
> -- 
> http://blog.garytully.com
> 
> Open Source Integration
> http://fusesource.com
> 
> 

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


Re: SecurityException not delegated to Camel?

Posted by Gary Tully <ga...@gmail.com>.
If you can configure sync send on the connection factory, can do it
via the brokerURL:
  vm://localhost?jms.alwaysSyncSend=true
then the send exception will bubble back up to camel. The exception on
creating the producer will still be there as that is always send
async.
A standard javax.jms.ExceptionListener would be called if one was
registered when the async exception are received from the broker.

On 30 July 2010 13:04, Holger_ <si...@googlemail.com> wrote:
>
> 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.
>
>



-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com