You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2011/03/10 22:38:44 UTC

svn commit: r1080362 - in /openejb/trunk/openejb3: assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/ assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/ container...

Author: jgallimore
Date: Thu Mar 10 21:38:44 2011
New Revision: 1080362

URL: http://svn.apache.org/viewvc?rev=1080362&view=rev
Log:
Fix for @LocalBean @EJB injections

Modified:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/EjbFactory.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/NamingUtil.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
    openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedEJB.java
    openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedServlet.java

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java?rev=1080362&r1=1080361&r2=1080362&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatJndiBuilder.java Thu Mar 10 21:38:44 2011
@@ -54,6 +54,7 @@ import static org.apache.openejb.tomcat.
 import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_NAME;
 import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_PROVIDER_ID;
 import static org.apache.openejb.tomcat.common.NamingUtil.LOCAL;
+import static org.apache.openejb.tomcat.common.NamingUtil.LOCALBEAN;
 import static org.apache.openejb.tomcat.common.NamingUtil.NAME;
 import static org.apache.openejb.tomcat.common.NamingUtil.RESOURCE_ID;
 import static org.apache.openejb.tomcat.common.NamingUtil.UNIT;
@@ -225,7 +226,7 @@ public class TomcatJndiBuilder {
         ejb.setProperty(NAME, ref.referenceName.replaceAll("^comp/env/", ""));
         ejb.setHome(ref.homeClassName);
         ejb.setRemote(null);
-        ejb.setProperty(LOCAL, ref.interfaceClassName);
+        ejb.setProperty(ref.localbean ? LOCALBEAN : LOCAL, ref.interfaceClassName);
         ejb.setLink(null);
         ejb.setType(ref.interfaceClassName);
 

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/EjbFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/EjbFactory.java?rev=1080362&r1=1080361&r2=1080362&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/EjbFactory.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/EjbFactory.java Thu Mar 10 21:38:44 2011
@@ -23,6 +23,7 @@ import org.apache.openejb.core.ivm.Intra
 import static org.apache.openejb.tomcat.common.NamingUtil.DEPLOYMENT_ID;
 import static org.apache.openejb.tomcat.common.NamingUtil.EXTERNAL;
 import static org.apache.openejb.tomcat.common.NamingUtil.LOCAL;
+import static org.apache.openejb.tomcat.common.NamingUtil.LOCALBEAN;
 import static org.apache.openejb.tomcat.common.NamingUtil.REMOTE;
 import static org.apache.openejb.tomcat.common.NamingUtil.getProperty;
 import static org.apache.openejb.tomcat.common.NamingUtil.isPropertyTrue;
@@ -66,6 +67,12 @@ public class EjbFactory extends Abstract
         // get and verify interface type
         InterfaceType type = InterfaceType.BUSINESS_REMOTE;
         String interfaceType = getProperty(reference, REMOTE);
+
+        if (interfaceType == null) {
+            type = InterfaceType.LOCALBEAN;
+            interfaceType = getProperty(reference, LOCALBEAN);
+        }
+      
         if (interfaceType == null) {
             type = InterfaceType.BUSINESS_LOCAL;
             interfaceType = getProperty(reference, LOCAL);

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/NamingUtil.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/NamingUtil.java?rev=1080362&r1=1080361&r2=1080362&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/NamingUtil.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/NamingUtil.java Thu Mar 10 21:38:44 2011
@@ -30,6 +30,7 @@ public class NamingUtil {
     public static final String DEPLOYMENT_ID = "deploymentid";
     public static final String EXTERNAL = "external";
     public static final String LOCAL = "local";
+    public static final String LOCALBEAN = "localbean";
     public static final String REMOTE = EjbRef.REMOTE;
     public static final String JNDI_NAME = "jndiname";
     public static final String JNDI_PROVIDER_ID = "jndiproviderid";

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java?rev=1080362&r1=1080361&r2=1080362&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java Thu Mar 10 21:38:44 2011
@@ -89,7 +89,7 @@ public class TempClassLoader extends URL
          * 2. Since this class loader uses Class.forName to load classes starting with java, javax or sun, it cannot load javax.faces.FacesServlet
          * 3. Result is , AnnotationDeployer throws a ClassNotFoundException
          */
-        if (!name.startsWith("javax.faces.") && (name.startsWith("java.") || name.startsWith("javax.") || name.startsWith("sun.") ||
+        if ((!name.startsWith("javax.faces.")) && (!name.startsWith("javax.servlet.jsp.jstl")) && (name.startsWith("java.") || name.startsWith("javax.") || name.startsWith("sun.") ||
                 name.startsWith("org.apache.openejb.api.") || name.startsWith("org.apache.openjpa.persistence."))) {
             return Class.forName(name, resolve, getClass().getClassLoader());
         }

Modified: openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedEJB.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedEJB.java?rev=1080362&r1=1080361&r2=1080362&view=diff
==============================================================================
--- openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedEJB.java (original)
+++ openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedEJB.java Thu Mar 10 21:38:44 2011
@@ -17,11 +17,13 @@
  */
 package org.superbiz.servlet;
 
+import javax.ejb.LocalBean;
 import javax.ejb.Stateless;
 import javax.sql.DataSource;
 import javax.annotation.Resource;
 
 @Stateless
+@LocalBean
 public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote {
     @Resource
     private DataSource ds;

Modified: openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedServlet.java?rev=1080362&r1=1080361&r2=1080362&view=diff
==============================================================================
--- openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedServlet.java (original)
+++ openejb/trunk/openejb3/examples/webapps/ejb-examples/src/main/java/org/superbiz/servlet/AnnotatedServlet.java Thu Mar 10 21:38:44 2011
@@ -35,6 +35,9 @@ public class AnnotatedServlet extends Ht
 
     @EJB
     private AnnotatedEJBRemote remoteEJB;
+    
+    @EJB 
+    private AnnotatedEJB localbeanEJB;
 
     @Resource
     private DataSource ds;
@@ -44,6 +47,15 @@ public class AnnotatedServlet extends Ht
         response.setContentType("text/plain");
         ServletOutputStream out = response.getOutputStream();
 
+        out.println("LocalBean EJB");
+        out.println("@EJB=" + localbeanEJB);
+        if (localbeanEJB != null) {
+            out.println("@EJB.getName()=" + localbeanEJB.getName());
+            out.println("@EJB.getDs()=" + localbeanEJB.getDs());
+        }
+        out.println("JNDI=" + lookupField("localbeanEJB"));
+        out.println();
+        
         out.println("Local EJB");
         out.println("@EJB=" + localEJB);
         if (localEJB != null) {