Websphere Remote Jndi Lookup - ClassCastException javax.naming.Reference cannot be cast to javax.jms.QueueConnectionFactory

Hi,

Someone has asked a similar question to this previously, but they didn't really reveal how they solved it.

I'm doing a Remote JNDI Lookup for a QueueConnectionFactory. The QueueConnectionFactory and the ear I'm working with are deployed on Websphere. Im also using Websphere MQ. I'm pretty sure my InitialContext is set up correctly. It retrieves my queues without problem.

However, when I do a lookup of the QueueConnectionFactory, my attempt to cast the object returns a ClassCastException.

Exception in thread "main" java.lang.ClassCastException: javax.naming.Reference cannot be cast to javax.jms.QueueConnectionFactory at queue.RemoteExecutionServerRunner.setUpWASQueue(RemoteExecutionServerRunner.java:101)
at queue.ExecutionServerTest.main(ExecutionServerTest.java:23)

Googling around leads me to things its something to do with the classpath.

Any help would be greatly appreciated.

Thank you
jndiContext = getJndiContext();
 
connectionFactory = (QueueConnectionFactory)   jndiContext.lookup("jms/BRESQueueConnectionFactory");
sendQueue = (Queue) jndiContext.lookup("queue/BRESQueueIn");
replyQueue = (Queue) jndiContext.lookup("queue/BRESQueueOut");
 
 
private Context getJndiContext() {
		
	Context ctx = null;
		
	try {
		Properties properties = new Properties();
		properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
		properties.setProperty(Context.PROVIDER_URL, "corbaloc:iiop:idassysapp2:2811");
		properties.setProperty(Context.URL_PKG_PREFIXES,"com.ibm.ws.naming");
		
		properties.setProperty("com.ibm.CORBA.ORBInit", "com.ibm.ws.sib.client.ORB");
		
		ctx = new InitialContext(properties);
			
	} catch (NamingException e) {
		e.printStackTrace();
	}
		
	return ctx;
}

Open in new window

fuzzydunlopAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Tuno85Commented:
I would suggest using InitialContext as return type.

Make sure you have the IBM JDK libraries on the classpath.

And eventually check this link:

http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14008677
0
fuzzydunlopAuthor Commented:
Hi Tuno,

Thanks for the response.

I have three IBM jars on my application build path.

sibc.jms.jar
sibc.jndi.jar
sibc.orb.jar

Are these enough? I've tried adding all the jars from my Websphere 6 installation directory to the build path but that doesn't seem to solve it.

Thanks
0
Tuno85Commented:
How do you execute this. On the server or unit test?

Do you use the IBM JVM?

Did you try InitialContext as return type?
0
Angular Fundamentals

Learn the fundamentals of Angular 2, a JavaScript framework for developing dynamic single page applications.

fuzzydunlopAuthor Commented:
I've written a standalone application, accessing Websphere remotely. My class is executed within a main method.

I did try the InitialContext as a return type, the error still occurs. I'm using the Sun JVM.
0
Tuno85Commented:
I am looking at the similar code I am using. Nothing wrong. Should be working.

Try using the IBM JVM, maybe that this works. Although same mechanism should be working with Sun JVM.

I was also looking around and also found this:

http://forums.sun.com/thread.jspa?threadID=5225537
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
fuzzydunlopAuthor Commented:
Hi,

Thanks for the link. I have allowed access to the Internal Server Classes on the Websphere Application Server.

I have managed to figure it out. It's not a very elegant solution but it works. This probably ties in with using the IBM JVM, but I imported a host of Jars from the Application Server into my client application. The directories were:

${WAS_HOME}\AppServer\lib
${WAS_HOME}\AppServer\plugins

Having these jars on my application classpath seemed to fix the problem.

Hope this helps anyone who comes across this problem. Thanks for the help Tuno.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java App Servers

From novice to tech pro — start learning today.