[jboss-cvs] JBossAS SVN: r77053 - trunk/server/src/main/org/jboss/deployment.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Aug 14 05:36:46 EDT 2008
Author: ALRubinger
Date: 2008-08-14 05:36:45 -0400 (Thu, 14 Aug 2008)
New Revision: 77053
Modified:
trunk/server/src/main/org/jboss/deployment/MappedReferenceMetaDataResolverDeployer.java
Log:
[EJBTHREE-1455] Use the default Proxy when ejb-ref is EJB2.x Component interface
Modified: trunk/server/src/main/org/jboss/deployment/MappedReferenceMetaDataResolverDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/MappedReferenceMetaDataResolverDeployer.java 2008-08-14 09:10:10 UTC (rev 77052)
+++ trunk/server/src/main/org/jboss/deployment/MappedReferenceMetaDataResolverDeployer.java 2008-08-14 09:36:45 UTC (rev 77053)
@@ -881,13 +881,41 @@
unresolvedRefs.add(cdmd.getComponentID()+":"+ref);
else
{
- cdmd.addDependency(target);
+
// Need to look at the local jndi name
String localInterface = ref.getLocal();
JBossEnterpriseBeanMetaData md = target.getBeanMetaData();
- JBossMetaData ejbMarMd = md.getEnterpriseBeansMetaData().getEjbJarMetaData();
+
+ /*
+ * If for a Session bean we've got a reference to an EJB2.x
+ * Local Component interface, stop processing because these
+ * are not bound in JNDI (only accessible via LocalHome.create()
+ */
+
+ // Session EJB?
+ boolean useDefaultProxy = false;
+ if(md.isSession())
+ {
+ // Cast
+ JBossSessionBeanMetaData smd = (JBossSessionBeanMetaData)md;
+
+ // Get the name of the Component Local Interface
+ String ejb2xLocalInterface = smd.getLocal();
+
+ // If the ejb-ref is to a EJB2.x Local Component Interface
+ if(localInterface.equals(ejb2xLocalInterface))
+ {
+ // Use the default proxy
+ useDefaultProxy = true;
+ }
+ }
+
+ // Get ejb-jar Metadata
+ JBossMetaData ejbJarMd = md.getEnterpriseBeansMetaData().getEjbJarMetaData();
+
+ // Resolve a local JNDI Name based on Spec type
String localJndiName = null;
- if (ejbMarMd.isEJB3x())
+ if (ejbJarMd.isEJB3x() && !useDefaultProxy)
{
localJndiName = md.determineResolvedJndiName(localInterface);
}
@@ -895,8 +923,17 @@
{
localJndiName = md.determineLocalJndiName();
}
- if(localJndiName != null)
+
+ // If we've got a resolved JNDI Name
+ if (localJndiName != null)
+ {
+ // Set it and forget it!
+ // http://en.wikipedia.org/wiki/Ron_Popeil
ref.setResolvedJndiName(localJndiName);
+ }
+
+ // Add the dependency
+ cdmd.addDependency(target);
}
}
else
@@ -976,24 +1013,60 @@
unresolvedRefs.add(cdmd.getComponentID()+":"+ref);
else
{
- cdmd.addDependency(target);
- // Determine the jndi name for the reference interface
- String iface = getInterface(ref);
- //LegacyEjb3JndiPolicy policy = new LegacyEjb3JndiPolicy();
- String businessInterface = ref.getRemote();
+
+ // Obtain remote interface name
+ String remoteInterface = ref.getRemote();
+
+ // Get Metadata
JBossEnterpriseBeanMetaData md = target.getBeanMetaData();
+
+ /*
+ * If for a Session bean we've got a reference to an EJB2.x
+ * Remote Component interface, stop processing because these
+ * are not bound in JNDI (only accessible via Home.create()
+ */
+
+ // Session EJB?
+ boolean useDefaultProxy = false;
+ if(md.isSession())
+ {
+ // Cast
+ JBossSessionBeanMetaData smd = (JBossSessionBeanMetaData)md;
+
+ // Get the name of the Component Remote Interface
+ String ejb2xRemoteInterface = smd.getRemote();
+
+ // If the ejb-ref is to a EJB2.x Remote Component Interface
+ if(remoteInterface.equals(ejb2xRemoteInterface))
+ {
+ // Use the default proxy
+ useDefaultProxy = true;
+ }
+ }
+
+ // Get ejb-jar metadata
JBossMetaData ejbMarMd = md.getEnterpriseBeansMetaData().getEjbJarMetaData();
+
+ // Resolve a JNDI name
String containerJndiName = null;
- if (ejbMarMd.isEJB3x())
+ if (ejbMarMd.isEJB3x() && !useDefaultProxy)
{
- containerJndiName = md.determineResolvedJndiName(businessInterface);
+ containerJndiName = md.determineResolvedJndiName(remoteInterface);
}
else
{
containerJndiName = md.determineJndiName();
}
+
+ // If we've got a resolved name
if(containerJndiName != null)
+ {
+ // Set it
ref.setResolvedJndiName(containerJndiName);
+ }
+
+ // Add the dependency
+ cdmd.addDependency(target);
}
}
else
More information about the jboss-cvs-commits
mailing list