You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Petr Stuchlik (JIRA)" <ji...@apache.org> on 2016/04/26 16:44:12 UTC

[jira] [Commented] (AMQ-585) InstanceAlreadyExistsException on .war redeploy (if useJmx="true)

    [ https://issues.apache.org/jira/browse/AMQ-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15258194#comment-15258194 ] 

Petr Stuchlik commented on AMQ-585:
-----------------------------------

Hello there.

Sorry to bring this up again, but I am probably experiencing the same issue here 6 years later.

System setup:
 - Linux Mint 17.3 x64
 - Tomcat 7 with activemq-all.jar (v5.10.0) in tomcat7/lib
{code:title=Tomcat context.xml}
<Resource name="jms/myConnectionFactory" auth="Container"
              type="org.apache.activemq.ActiveMQConnectionFactory"
              description="JMS Connection Factory"
              factory="org.apache.activemq.jndi.JNDIReferenceFactory"
              brokerURL="vm://localhost"
              brokerName="LocalActiveMQBroker"
              userName="activemq" password="activemq"
              useEmbeddedBroker="false" />
{code}

Using JMS with Spring 4.2.5 (Spring Integration JMS & Java DSL config). When invoking JMS outbound adapter I get the above-mentioned {{InstanceAlreadyExistsException}}.
If I add {{useJmx="false"}}, the exception disappears.

To answer the questions for [~jstrachan]:
 - Spring context is closed. I tried clean deploy and tomcat restart as well. 
 - I don't see any logging related to AMQ other than a clash of bindings (not related I suppose):
{code}
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/share/tomcat7/lib/activemq-all.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/var/lib/tomcat7/webapps/ROOT/WEB-INF/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
{code}
 - I load multiple xml classpath files including spring-context.xml in my web.xml. I also import some JavaConfig beans and use aop proxy. 

Any ideas?

> InstanceAlreadyExistsException on .war redeploy (if useJmx="true)
> -----------------------------------------------------------------
>
>                 Key: AMQ-585
>                 URL: https://issues.apache.org/jira/browse/AMQ-585
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 4.0 M4
>         Environment: SuSe Linux 9.1, Sun JDK 1.4.2_08, Tomcat 5.0.28
>            Reporter: Mass Dosage
>            Priority: Minor
>             Fix For: 4.0 RC2
>
>
> I am using ActiveMQ as part of a web-app deployed to Tomcat. Active MQ is configured via spring and follows the spring examples that you ship with the source in M4. If I configure the broker to use JMX (  <broker useJmx="true"> ) and deploy the app to tomcat, everything goes fine. However, when I deploy a newer version of the app (hot deploy) I get the following error when the JMS consumer is created from spring:
> 006-02-20 15:16:17,378 ERROR org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:205) Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'smsResponseConsumer' defined in ServletContext resource [/WEB-INF/applicationContext-messaging.xml]: Initialization of bean failed; nested exception is javax.jms.JMSException: org.apache.activemq:Type=Topic,Destination=ActiveMQ.Advisory.Connection,BrokerName=localhost
> javax.jms.JMSException: org.apache.activemq:Type=Topic,Destination=ActiveMQ.Advisory.Connection,BrokerName=localhost
> And the root cause of this exception is:
> Caused by: javax.management.InstanceAlreadyExistsException: org.apache.activemq:Type=Topic,Destination=ActiveMQ.Advisory.Connection,BrokerName=localhost
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
> 	at org.apache.activemq.openwire.DataStreamMarshaller.createThrowable(DataStreamMarshaller.java:199)
> 	at org.apache.activemq.openwire.DataStreamMarshaller.unmarsalThrowable(DataStreamMarshaller.java:159)
> 	at org.apache.activemq.openwire.v1.ExceptionResponseMarshaller.unmarshal(ExceptionResponseMarshaller.java:67)
> 	at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:214)
> 	at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:181)
> 	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:135)
> 	... 1 more
> So it appears as if the JMX entry isn't "unbound" when the applicaiton restarts on a redeploy.
> If I set JMX to false then I can redeploy the application without any errors. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)