[
http://issues.apache.org/jira/browse/GERONIMO-2120?page=comments#action_12416261
]
Ted Kirby commented on GERONIMO-2120:
-------------------------------------
I would prefer some use of reflection, to keep in as much checking as possible.
I have successfully tested and run with the following code:
Object proxyInfoObject = gbeanData.getAttribute("proxyInfo");
if (proxyInfoObject == null) {
throw new IllegalStateException("BUG! no proxy info found in
gbeanData: " + gbeanData);
}
ProxyInfo proxyInfo = null;
String proxyHomeName = null;
String proxyRemoteName = null;
try {
proxyInfo = (ProxyInfo) proxyInfoObject;
proxyHomeName = proxyInfo.getHomeInterface().getName();
proxyRemoteName = proxyInfo.getRemoteInterface().getName();
} catch (java.lang.ClassCastException e) {
if
(ProxyInfo.class.getName().equals(proxyInfoObject.getClass().getName())) {
try {
Class proxyInfoClass = proxyInfoObject.getClass();
Method[] methods = proxyInfoClass.getMethods();
Method getHomeInterface =
proxyInfoClass.getMethod("getHomeInterface", null);
if (getHomeInterface != null) {
Class proxyHomeClass = (Class)
getHomeInterface.invoke(proxyInfoObject, null);
proxyHomeName = proxyHomeClass.getName();
}
Method getRemoteInterface =
proxyInfoClass.getMethod("getRemoteInterface", null);
if (getRemoteInterface != null) {
Class proxyRemoteClass = (Class)
getRemoteInterface.invoke(proxyInfoObject, null);
proxyRemoteName = proxyRemoteClass.getName();
}
} catch(Exception ex) {
}
} else {
throw e;
}
}
if (!home.equals(proxyHomeName) || !remote.equals(proxyRemoteName)) {
throw new DeploymentException("Reference interfaces do not match
bean interfaces:\n" +
"reference home: " + home + "\n" +
"ejb home: " + proxyHomeName + "\n" +
"reference remote: " + remote + "\n" +
"ejb remote: " + proxyRemoteName);
}
It is a bit verbose and can be compressed, but that is how I developed,
debugged and got it running.
> 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