Why ClassCastException on JMS ConnectionFactory lookup in JNDI?
Posted
by Derek Mahar
on Stack Overflow
See other posts from Stack Overflow
or by Derek Mahar
Published on 2010-05-12T14:17:03Z
Indexed on
2010/05/12
14:34 UTC
Read the original article
Hit count: 397
What might be the cause of the following ClassCastException
in a standalone JMS client application when it attempts to retrieve a connection factory from the JNDI provider?
Exception in thread "main" java.lang.ClassCastException: javax.naming.Reference cannot be cast to javax.jms.ConnectionFactory
Here is an abbreviated version of the JMS client that includes only its start()
and stop()
methods. The exception occurs on the first line in method start()
which attempts to retrieve the connection factory from the JNDI provider, a remote LDAP server. The JMS connection factory and destination objects are on a remote JMS server.
class JmsClient {
private ConnectionFactory connectionFactory;
private Connection connection;
private Session session;
private MessageConsumer consumer;
private Topic topic;
public void stop() throws JMSException {
consumer.close();
session.close();
connection.close();
}
public void start(Context context, String connectionFactoryName, String topicName) throws NamingException, JMSException {
// ClassCastException occurs when retrieving connection factory.
connectionFactory = (ConnectionFactory) context.lookup(connectionFactoryName);
connection = connectionFactory.createConnection("username","password");
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
topic = (Topic) context.lookup(topicName);
consumer = session.createConsumer(topic);
connection.start();
}
private static Context getInitialContext() throws NamingException, IOException {
String filename = "context.properties";
Properties props = new Properties();
props.load(new FileInputStream(filename));
return new InitialContext(props);
}
}
© Stack Overflow or respective owner