[jboss-cvs] JBossAS SVN: r67880 - trunk/server/src/main/org/jboss/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Dec 4 09:20:44 EST 2007


Author: adrian at jboss.org
Date: 2007-12-04 09:20:44 -0500 (Tue, 04 Dec 2007)
New Revision: 67880

Modified:
   trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java
Log:
Add some extra debugging context showing what we searched to resolve an ejb[-local]-ref

Modified: trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java	2007-12-04 13:56:41 UTC (rev 67879)
+++ trunk/server/src/main/org/jboss/deployment/ReferenceMetaDataResolverDeployer.java	2007-12-04 14:20:44 UTC (rev 67880)
@@ -164,12 +164,13 @@
    {
       if(localRefs == null)
          return;
+      ArrayList<String> searched = new ArrayList<String>();
       for(EJBLocalReferenceMetaData ref : localRefs)
       {
          String link = ref.getLink();
-         String target = findLocalEjbLink(unit, link);
+         String target = findLocalEjbLink(unit, link, searched);
          if(target == null)
-            unresolvedRefs.add(ref.getEjbRefName()+"/ejb-local-ref/"+link);
+            unresolvedRefs.add(ref.getEjbRefName()+"/ejb-local-ref/"+link +" available: " + searched);
          else
             ref.setMappedName(target);
       }      
@@ -178,6 +179,7 @@
    {
       if(ejbRefs == null)
          return;
+      ArrayList<String> searched = new ArrayList<String>();
       for(EJBReferenceMetaData ref : ejbRefs)
       {
          String mappedName = ref.getMappedName();
@@ -186,9 +188,9 @@
             String link = ref.getLink();
             String target = null;
             if(link != null)
-               target = findEjbLink(unit, link);
+               target = findEjbLink(unit, link, searched);
             if(target == null)
-               unresolvedRefs.add(ref.getEjbRefName()+"/ejb-ref/"+link);
+               unresolvedRefs.add(ref.getEjbRefName()+"/ejb-ref/"+link + " available: " + searched);
             else
                ref.setMappedName(target);
          }
@@ -201,13 +203,14 @@
     *
     * @param unit DeploymentUnit
     * @param link Content of the &lt;ejb-link&gt; entry.
+    * @param searched the list of ejbs searched
     *
     * @return The JNDI Entry of the target bean; <code>null</code> if
     *         no appropriate target could be found.
     */
-   public static String findEjbLink(DeploymentUnit unit, String link)
+   public static String findEjbLink(DeploymentUnit unit, String link, ArrayList<String> searched)
    {
-      return resolveLink(unit, link, false);
+      return resolveLink(unit, link, searched, false);
    }
 
    /**
@@ -216,13 +219,14 @@
     *
     * @param unit DeploymentUnit
     * @param link Content of the &lt;ejb-link&gt; entry.
+    * @param searched the searched ejbs
     *
     * @return The JNDI Entry of the target bean; <code>null</code> if
     *         no appropriate target could be found.
     */
-   public static String findLocalEjbLink(DeploymentUnit unit, String link)
+   public static String findLocalEjbLink(DeploymentUnit unit, String link, ArrayList<String> searched)
    {
-      return resolveLink(unit, link, true);
+      return resolveLink(unit, link, searched, true);
    }
 
    /**
@@ -241,7 +245,7 @@
       return resolveMessageDestination(server, di, link);
    }
 
-   private static String resolveLink(DeploymentUnit di, String link, boolean isLocal)
+   private static String resolveLink(DeploymentUnit di, String link, ArrayList<String> searched, boolean isLocal)
    {
       if (link == null)
       {
@@ -262,17 +266,17 @@
       if (link.indexOf('#') != -1)
       {
          // <ejb-link> is specified in the form path/file.jar#Bean
-         return resolveRelativeLink(di, link, isLocal);
+         return resolveRelativeLink(di, link, searched, isLocal);
       }
       else
       {
          // <ejb-link> contains a Bean Name, scan the DeploymentUnit tree
          DeploymentUnit top = di.getTopLevel();
-         return resolveAbsoluteLink(top, link, isLocal);
+         return resolveAbsoluteLink(top, link, searched, isLocal);
       }
    }
 
-   private static String resolveRelativeLink(DeploymentUnit unit, String link, boolean isLocal)
+   private static String resolveRelativeLink(DeploymentUnit unit, String link, ArrayList<String> searched, boolean isLocal)
    {
       DeploymentUnit top = unit.getTopLevel();
       String path = link.substring(0, link.indexOf('#'));
@@ -299,21 +303,32 @@
          if (beanMD != null)
          {
             linkTarget = getJndiName(beanMD, isLocal);
+            if (linkTarget == null)
+            {
+               if (isLocal)
+                  log.warn("Unable to determine local jndi name for " + beanMD.getEjbName());
+               else
+                  log.warn("Unable to determine jndi name for " + beanMD.getEjbName());
+               searched.add(beanMD.getEjbName());
+            }
          }
          else
          {
             log.warn("No Bean named '" + ejbName + "' found in '" + path + "'!");
+            for (JBossEnterpriseBeanMetaData md : appMD.getEnterpriseBeans())
+               searched.add(md.getEjbName());
          }
       }
       else
       {
          log.warn("DeploymentUnit " + targetUnit + " is not an EJB .jar " + "file!");
+         searched.add(targetUnit.getName());
       }
 
       return linkTarget;
    }
 
-   private static String resolveAbsoluteLink(DeploymentUnit unit, String link, boolean isLocal)
+   private static String resolveAbsoluteLink(DeploymentUnit unit, String link, ArrayList<String> searched, boolean isLocal)
    {
       if (log.isTraceEnabled())
       {
@@ -330,6 +345,14 @@
          if (beanMD != null)
          {
             ejbName = getJndiName(beanMD, isLocal);
+            if (ejbName == null)
+            {
+               if (isLocal)
+                  log.warn("Unable to determine local jndi name for " + beanMD.getEjbName());
+               else
+                  log.warn("Unable to determine jndi name for " + beanMD.getEjbName());
+               searched.add(beanMD.getEjbName());
+            }
             if (log.isTraceEnabled())
             {
                log.trace("Found Bean: " + beanMD + ", resolves to: " + ejbName);
@@ -344,6 +367,7 @@
             for(JBossEnterpriseBeanMetaData md : ejbMD.getEnterpriseBeans())
             {
                String beanEjbName = getJndiName(md, isLocal);
+               searched.add(md.getEjbName());
                log.trace("... ejbName: " + beanEjbName);
             }
          }




More information about the jboss-cvs-commits mailing list