[ 
https://issues.apache.org/jira/browse/AMQ-9139?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Samuel Keusch updated AMQ-9139:
-------------------------------
    Priority: Minor  (was: Major)

> HTTP connector: ForbiddenClassException when InvalidClientIDException occurs
> ----------------------------------------------------------------------------
>
>                 Key: AMQ-9139
>                 URL: https://issues.apache.org/jira/browse/AMQ-9139
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client, Transport
>    Affects Versions: 5.17.0
>            Reporter: Samuel Keusch
>            Priority: Minor
>
> When using the HTTP connector and a client with the same Client ID is already 
> connected, the following exception occurs:
> {code:java}
> 022-10-21 14:51:33,044 WARN  [ActiveMQ Transport: HTTP Reader 
> http://localhost:9980] 
> org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:283)
>  - Transport (http://localhost:9980) failed, attempting to automatically 
> reconnect - MDC[]
> java.io.IOException: Failed to perform GET on: http://localhost:9980 Reason: 
> javax.jms.InvalidClientIDException
>     at 
> org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:36)
>     at 
> org.apache.activemq.transport.http.HttpClientTransport.run(HttpClientTransport.java:205)
>     at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: com.thoughtworks.xstream.security.ForbiddenClassException: 
> javax.jms.InvalidClientIDException
>     at 
> com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26)
>     at 
> com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74)
>     at 
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
>     at 
> com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
>     at 
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:420)
>     at 
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:277)
>     at 
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74)
>     at 
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
>     at 
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68)
>     at 
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52)
>     at 
> com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
>     at 
> com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
>     at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1421)
>     at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1399)
>     at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1284)
>     at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1275)
>     at 
> org.apache.activemq.transport.xstream.XStreamWireFormat.unmarshalText(XStreamWireFormat.java:65)
>     at 
> org.apache.activemq.transport.util.TextWireFormat.unmarshal(TextWireFormat.java:56)
>     at 
> org.apache.activemq.transport.http.HttpClientTransport.run(HttpClientTransport.java:196)
>     ... 1 common frames omitted {code}
> In our case, whenever our consumer application is restarted, the consumer 
> application will face a _InvalidClientIDException_ until the previous 
> connection has been cleaned up by the broker (after 30seconds).
> But because of the {_}ForbiddenClassException{_}, the consumer application 
> can somehow not recover and will not attempt to reconnect until the client ID 
> is available.
> It leads to queues not being consumed, as the affected application is the 
> only consumer for certain queues.
>  
> I found AMQ-8381 which is very similar but affected another java package 
> (java.util).
> *Workaround / solution:*
> I believe the _javax.jms_ package should also be added to the allowed 
> packages list of xstream. This can be temporarily done with the following 
> code:
>  
> {code:java}
> static {
>   System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", 
> "java.lang,org.apache.activemq,org.fusesource.hawtbuf,com.thoughtworks.xstream.mapper"/*default
>  value*/ + ",javax.jms"); 
> }{code}
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to