[ 
http://issues.apache.org/jira/browse/GERONIMO-2120?page=comments#action_12416214
 ] 

David Jencks commented on GERONIMO-2120:
----------------------------------------

Looking at the code I think we could either use reflection on the proxyInfo 
from the "other" classloader or just punt on ClassCastException.  I'm not sure 
if either of these are likely to reveal more downstream problems, but I think 
either would fix the immediate issue.

Code is:
    private void checkRemoteProxyInfo(AbstractNameQuery query, String home, 
String remote, Configuration configuration) throws DeploymentException {
        if (remote.equals("javax.management.j2ee.Management") && 
home.equals("javax.management.j2ee.ManagementHome")) {
            // Don't verify the MEJB because it doesn't have a proxyInfo 
attribute
            return;
        }
        GBeanData gbeanData;
        try {
            gbeanData = configuration.findGBeanData(query);
        } catch (GBeanNotFoundException e) {
            return;
            //we can't check anything, hope for the best.
//            throw new DeploymentException("Could not locate ejb matching " + 
query + " in configuration " + configuration.getId());
        }
        ProxyInfo proxyInfo = (ProxyInfo) gbeanData.getAttribute("proxyInfo");  
///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<CCE
        if (proxyInfo == null) {
            throw new IllegalStateException("BUG! no proxy info found in 
gbeanData: " + gbeanData);
        }
        if (!proxyInfo.getHomeInterface().getName().equals(home)
                || !proxyInfo.getRemoteInterface().getName().equals(remote)) {
            throw new DeploymentException("Reference interfaces do not match 
bean interfaces:\n" +
                    "reference home: " + home + "\n" +
                    "ejb home: " + proxyInfo.getHomeInterface().getName() + 
"\n" +
                    "reference remote: " + remote + "\n" +
                    "ejb remote: " + proxyInfo.getRemoteInterface().getName());
        }
    }


> Can't have ejb references outside current config.  ClassCastException on 
> org.openejb.proxy.ProxyInfo
> ----------------------------------------------------------------------------------------------------
>
>          Key: GERONIMO-2120
>          URL: http://issues.apache.org/jira/browse/GERONIMO-2120
>      Project: Geronimo
>         Type: Bug
>     Security: public(Regular issues) 
>   Components: deployment, OpenEJB
>     Versions: 1.1
>  Environment: Win XP, Intel, Sun JDK 142
>     Reporter: Ted Kirby

>
> See http://mail-archives.apache.org/mod_mbox/geronimo-user/200606.mbox/[EMAIL 
> PROTECTED]
> I deploy (or distribute) a jar with an ejb, then deploy (or distribute) a war 
> that references the ejb, and get:
> Error: Operation failed: java.lang.ClassCastException
> with this server.log entry:
> 10:51:39,531 ERROR [Deployer] Deployment failed due to 
> java.lang.ClassCastException
>       at 
> org.openejb.deployment.OpenEJBReferenceBuilder.checkRemoteProxyInfo(OpenEJBReferenceBuilder.java:133)
>       at 
> org.openejb.deployment.OpenEJBReferenceBuilder.createEJBRemoteRef(OpenEJBReferenceBuilder.java:159)
>       at 
> org.openejb.deployment.OpenEJBReferenceBuilder$$FastClassByCGLIB$$bfd62c9f.invoke(<generated>)
>       at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>       at 
> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
>       at 
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
>       at 
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
>       at 
> org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
>       at 
> org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
>       at 
> org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
>       at 
> org.apache.geronimo.j2ee.deployment.EJBReferenceBuilder$$EnhancerByCGLIB$$d6cd2b5d.createEJBRemoteRef(<generated>)
>       at 
> org.apache.geronimo.j2ee.deployment.RefContext.getEJBRemoteRef(RefContext.java:69)
>       at 
> org.apache.geronimo.naming.deployment.ENCConfigBuilder.addEJBRef(ENCConfigBuilder.java:412)
>       at 
> org.apache.geronimo.naming.deployment.ENCConfigBuilder.addEJBRefs(ENCConfigBuilder.java:339)
>       at 
> org.apache.geronimo.naming.deployment.ENCConfigBuilder.buildComponentContext(ENCConfigBuilder.java:731)
>       at 
> org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder.buildComponentContext(TomcatModuleBuilder.java:458)
>       at 
> org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder.addGBeans(TomcatModuleBuilder.java:288)
>       at 
> org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder$$FastClassByCGLIB$$6f85ec2c.invoke(<generated>)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to