Sounds like you've multiple jms API jars causing the
ClassCastException (ActiveMQConnectionFactory definitely is-a
ConnectionFactory :)

On 6/15/07, Rob Terpilowski <[EMAIL PROTECTED]> wrote:
Hello active mq users ,
I am running into the following issue that was posted on the mailing list in 
January, but for which no
response was posted.

I have the following configuration on my system

tomcat 5.5

java 1.5.09

activemq jars version 4.1.1

The active MQ broker is started  , from the application .

the code for it is

public void contextInitialized(ServletContextEvent arg0) {

try{

System.out.println("Starting ActiveMQ Broker Service...");

broker.addConnector("tcp://localhost:61616?trace=true");

broker.start();

System.out.println("Active MQ Broker Started at local host port 61616");

}catch(Exception e){

System.err.println(e.getMessage());

e.printStackTrace();

throw new RuntimeException(e);

}

}



In server.xml , I placed the JNDI resources as follows
<GlobalNamingResources>

<Resource name="jms/TopicConnectionFactory"

auth="Container"

type="org.apache.activemq.ActiveMQConnectionFactory"

description="JMS Connection Factory"

factory="org.apache.activemq.jndi.JNDIReferenceFactory"

brokerURL="tcp://localhost:61716"

brokerName="LocalActiveMQBroker"/>

<Resource name="jms/Topic"

auth="Container"

type="org.apache.activemq.command.ActiveMQTopic"

description="sample Topic"

factory="org.apache.activemq.jndi.JNDIReferenceFactory"

physicalName="FOO.BAR"/>

</GlobalNamingResources>

I have a web app called UI , I am trying to access these global jndi
recources from this web app, Hence the context.xml for this web app has
the following

<Context reloadable="true">

<ResourceLink
name="ConnectionFactory"global="jms/TopicConnectionFactory" type=
"org.apache.activemq.ActiveMQConnectionFactory" />

<ResourceLink name="PNMTopic" global="jms/Topic" type=
"org.apache.activemq.command.ActiveMQTopic" />

</Context>

The subsciber class in the UI context is as follows

public class PNMSubscriber {

TopicConnection tConn ;

TopicConnectionFactory tFactory ;

Topic pnmTopic;

ActiveMQTopicSession pnmSession ;

public PNMSubscriber(){

try{

InitialContext initialContext = new InitialContext();

Context envContext = (Context) initialContext.lookup("java:comp/env");

tFactory
=(TopicConnectionFactory)envContext.lookup("ConnectionFactory");

tConn = tFactory.createTopicConnection();

pnmSession = (ActiveMQTopicSession) tConn.createTopicSession(true,
Session.AUTO_ACKNOWLEDGE);

pnmTopic = (Topic)envContext.lookup("PNMTopic");

pnmSubscriber = pnmSession.createSubscriber(pnmTopic);

}catch(Exception e){

e.printStackTrace();

}

}

I get a class cast exception as follows

java.lang.ClassCastException:
org.apache.activemq.ActiveMQConnectionFactory

at
com.cpnm.common.messaging.PNMSubscriber.<init>(PNMSubscriber.java:40)

The exception is raised , at the following line , in the code above.

tFactory =
(TopicConnectionFactory)envContext.lookup("ConnectionFactory");

I tried casting the object to "ActiveMQConnectionFactory" , I still get
the same exception.

I think, Iam missing something in the configuration, please let me know,
if I need to add anything else.

The active MQ jars are located in <catalina-home>/server/lib and I tried 
putting them
under <catalina-home>/shared/lib as well with no difference

thank you,
-rob





____________________________________________________________________________________
Don't get soaked.  Take a quick peak at the forecast
with the Yahoo! Search weather shortcut.
http://tools.search.yahoo.com/shortcuts/#loc_weather


--
James
-------
http://macstrac.blogspot.com/

Reply via email to