[jboss-cvs] JBossAS SVN: r87035 - projects/ejb3/trunk/mc-int/src/main/java/org/jboss/ejb3/mcint/metadata/plugins.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 9 04:08:24 EDT 2009


Author: jaikiran
Date: 2009-04-09 04:08:24 -0400 (Thu, 09 Apr 2009)
New Revision: 87035

Modified:
   projects/ejb3/trunk/mc-int/src/main/java/org/jboss/ejb3/mcint/metadata/plugins/AbstractEjbReferenceValueMetadata.java
Log:
EJBTHREE-1802 Fixed the implementation to take care of UnresolvableReferenceException while iterating through a collection of deployment units, for EJB reference resolution

Modified: projects/ejb3/trunk/mc-int/src/main/java/org/jboss/ejb3/mcint/metadata/plugins/AbstractEjbReferenceValueMetadata.java
===================================================================
--- projects/ejb3/trunk/mc-int/src/main/java/org/jboss/ejb3/mcint/metadata/plugins/AbstractEjbReferenceValueMetadata.java	2009-04-09 08:08:18 UTC (rev 87034)
+++ projects/ejb3/trunk/mc-int/src/main/java/org/jboss/ejb3/mcint/metadata/plugins/AbstractEjbReferenceValueMetadata.java	2009-04-09 08:08:24 UTC (rev 87035)
@@ -38,9 +38,9 @@
 
 /**
  * AbstractEjbReferenceValueMetadata
- * 
+ *
  * Describes both the requisite JNDI dependency and target Proxy for injection
- * based upon a supplied resolver, reference, and naming context.  Will 
+ * based upon a supplied resolver, reference, and naming context.  Will
  * search through all eligible EJB3 deployments available from the
  * MainDeployer
  *
@@ -51,7 +51,7 @@
 {
    // --------------------------------------------------------------------------------||
    // Class Members ------------------------------------------------------------------||
-   // --------------------------------------------------------------------------------||  
+   // --------------------------------------------------------------------------------||
 
    private static final long serialVersionUID = 1L;
 
@@ -59,7 +59,7 @@
 
    // --------------------------------------------------------------------------------||
    // Instance Members ---------------------------------------------------------------||
-   // --------------------------------------------------------------------------------||  
+   // --------------------------------------------------------------------------------||
 
    private EjbReferenceResolver resolver;
 
@@ -89,7 +89,7 @@
 
    // --------------------------------------------------------------------------------||
    // Overridden Implementations -----------------------------------------------------||
-   // --------------------------------------------------------------------------------||  
+   // --------------------------------------------------------------------------------||
 
    @Override
    public Object getValue(TypeInfo info, ClassLoader cl) throws Throwable
@@ -118,7 +118,7 @@
 
    /**
     * Obtains the target JNDI name, whose value is to be injected
-    * 
+    *
     * @return The target JNDI Name
     */
    protected String getTargetJndiName()
@@ -144,13 +144,26 @@
                continue;
             }
 
-            // Try to resolve
-            jndiName = resolver.resolveEjb(du, reference);
+            try
+            {
+               // Try to resolve
+               jndiName = resolver.resolveEjb(du, reference);
 
-            // If we've resolved here, we're done
-            if (jndiName != null)
+               // If we've resolved here, we're done
+               if (jndiName != null)
+               {
+                  break;
+               }
+
+            }
+            catch (UnresolvableReferenceException urre)
             {
-               break;
+               // we could not resolve in this unit, let's try the next unit
+               if (log.isTraceEnabled())
+               {
+                  log.trace("EJB reference " + reference + " could not be resolved in unit " + du + " - trying next unit");
+               }
+               continue;
             }
          }
       }
@@ -167,7 +180,7 @@
 
    /**
     * Obtains the EJB Proxy from JNDI based upon the resolved JNDI name
-    * 
+    *
     * @return The Proxy to inject
     */
    protected Object resolveEjb()
@@ -176,7 +189,7 @@
       Object obj = null;
       String jndiName = this.getTargetJndiName();
 
-      // Lookup 
+      // Lookup
       try
       {
          obj = getNamingContext().lookup(jndiName);
@@ -194,7 +207,7 @@
 
    // --------------------------------------------------------------------------------||
    // Accessors / Mutators -----------------------------------------------------------||
-   // --------------------------------------------------------------------------------||  
+   // --------------------------------------------------------------------------------||
 
    public EjbReference getReference()
    {




More information about the jboss-cvs-commits mailing list