0 Replies Latest reply on Nov 18, 2003 2:37 PM by kgilpin

    ClassCastException with PortableRemoteObject.narraw using jb


      I have 2 EJB applications which are each deployed with a jboss-app.xml file so that they will have separate classloader hierarchies. The reason for this is that the two applications share some common JAR files such as some base utilities, Hibernate beans, and 3rd party ones such as struts.

      Both applications have an EJB session bean which implements the same home and session interfaces. These beans register themselves in JNDI, and a common UI finds them in a generic manner and exposes a UI for invoking them (the session interface is IScriptRemote).

      The problem occurs when the first application looks up the IScriptRemote from the second application in the following code. A ClassCastException occurs on the last line you see here. Before I created the jboss-app.xml files, no exception occurred (but I had other problems with LinkerErrors).

      InitialContext ic = J2EEUtil.getInitialContext(port, principal, credentials);
      try {
      NamingEnumeration e = ic.listBindings(JNDI_SCRIPT_ROOT);
      while ( e.hasMoreElements() ) {
      Binding binding = (Binding)e.next();
      Object obj = binding.getObject();
      LOG.debug("Got object ", obj, " from binding ", binding);
      try {
      if ( obj instanceof EJBHome ) {
      IScriptRemoteHome home = (IScriptRemoteHome)PortableRemoteObject.narrow(obj, IScriptRemoteHome.class);

      The reported exception is:

      15:24:30,609 WARN [Repository] Exception processing binding ReloadMetadataScriptHome: $Proxy44:ikp/script/ReloadMetadataScriptHomeHome
      at com.sun.corba.se.internal.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:293) at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:134) at com.ipi.script.Repository.findAll(Repository.java:102)