Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ClassCastException when casting home reference returned by JNDI lookup()

843829Nov 26 2003 — edited Dec 17 2003
Hi,

I need help with this one.
This problem arises randomly in a production distributed J2EE application.

OS : Windows 2000
WebServer : weblogic 6.1 in a DMZ
EJB container : weblogic 6.1 in a local network accessing an AS400 backoffice

Web Tiers is build around Struts 1.1. and communicates with Stateless session EJB in EJB tier via t3 weblogic protocol.

Randomly the Home reference returned by context.lookup() throws ClassCastException when casted to the bean's home type.

Bean is accessed by struts actions with a helper class encapsulating InitialContext creation and bean lookup.

Code from the helper :
public class AppellerEJBSoliweb {

	private static LogSoltim log = LogFactorySoltim.getLogSoltim(AppellerEJBSoliweb.class);

	/**
	 * Method getInstanceIG_DevisOptiqueEJB.<br>
	 * Permet de recup?rer une instance d'un EJB en evitant de faire le lookup et tout ce qui va avec...<br>
	 * @return DevisOptiqueRemote
	 */
	public static DevisOptiqueRemote getInstanceIG_DevisOptiqueEJB() throws Exception {
		log.info("Perf> DEBUT> getInstanceIG_DevisOptiqueEJB");
		DevisOptiqueRemote bean = null;
		try {
			String providerURL = SysConfig.getConfig("IG_DevisOptiqueEJB.java.naming.provider.url");
			String contextFactory = SysConfig.getConfig("IG_DevisOptiqueEJB.java.naming.factory.initial");
			String userName = SysConfig.getConfig("IG_DevisOptiqueEJB.java.naming.security.principal");
			String password = SysConfig.getConfig("IG_DevisOptiqueEJB.java.naming.security.credentials");
			Hashtable properties = new Hashtable();
			properties.put("java.naming.factory.initial", contextFactory);
			properties.put("java.naming.provider.url", providerURL);
			if (userName != null) {
				if (!(userName.trim()).equals("")) {
					properties.put("java.naming.security.principal", userName);
					properties.put("java.naming.security.credentials", password);
				}
			}
			Context ctx = new InitialContext(properties);
			log.info( "Context lookup()" );
			Object ref = PortableRemoteObject.narrow( ctx.lookup(JNDINoms.JNDI_DEVIS_OPTIQUE_EJB) , DevisOptiqueRemoteHome.class );
			log.debug( "EJBHome stub : " + ref.getClass().getName() );
			DevisOptiqueRemoteHome home = (DevisOptiqueRemoteHome)ref;
			bean = home.create();
			log.debug( "EJBObject stub : " + bean.getClass().getName() );
		}
		catch (Exception e) {
			log.error(e);
			e.printStackTrace();
			throw e;
		}
		log.info("Perf> FIN> getInstanceIG_DevisOptiqueEJB");
		return bean;
	}
logs :

[2003-11-24 11:30:18,984] - [INFO ] - [AppellerEJBSoliweb.java:32] - Perf> DEBUT> getInstanceIG_DevisOptiqueEJB
[2003-11-24 11:30:18,984] - [INFO ] - [AppellerEJBSoliweb.java:49] - Context lookup()
[2003-11-24 11:30:19,000] - [DEBUG] - [AppellerEJBSoliweb.java:51] - EJBHome stub : $Proxy65
[2003-11-24 11:30:19,000] - [ERROR] - [AppellerEJBSoliweb.java:57] - java.lang.ClassCastException: $Proxy69


[2003-11-24 11:45:32,671] - [INFO ] - [AppellerEJBSoliweb.java:32] - Perf> DEBUT> getInstanceIG_DevisOptiqueEJB
[2003-11-24 11:45:32,671] - [INFO ] - [AppellerEJBSoliweb.java:49] - Context lookup()
[2003-11-24 11:45:32,671] - [DEBUG] - [AppellerEJBSoliweb.java:51] - EJBHome stub : $Proxy68
[2003-11-24 11:45:32,671] - [ERROR] - [AppellerEJBSoliweb.java:57] - java.lang.ClassCastException: $Proxy68

InitialContext configuration:

IG_DevisOptiqueEJB.java.naming.provider.url=t3://frtlr028.esquif.net:80
IG_DevisOptiqueEJB.java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 14 2004
Added on Nov 26 2003
13 comments
1,752 views