You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/11/12 19:20:55 UTC

svn commit: r594246 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: client/LocalInitialContextFactory.java core/ivm/naming/InitContextFactory.java

Author: dblevins
Date: Mon Nov 12 10:20:54 2007
New Revision: 594246

URL: http://svn.apache.org/viewvc?rev=594246&view=rev
Log:
Patch from Jarek Gawor OPENEJB-716: Security with LocalInitialContextFactory
Small change by me to add static cache of context into InitContextFactory

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java?rev=594246&r1=594245&r2=594246&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java Mon Nov 12 10:20:54 2007
@@ -33,24 +33,27 @@
  */
 public class LocalInitialContextFactory implements javax.naming.spi.InitialContextFactory {
 
-    static Context intraVmContext;
     private static OpenEJBInstance openejb;
     private static final String OPENEJB_EMBEDDED_REMOTABLE = "openejb.embedded.remotable";
 
     public Context getInitialContext(Hashtable env) throws javax.naming.NamingException {
-        if (intraVmContext == null) {
-            try {
-                Properties properties = new Properties();
-                properties.putAll(env);
-                init(properties);
-            } catch (Exception e) {
-                throw (NamingException) new NamingException("Attempted to load OpenEJB. " + e.getMessage()).initCause(e);
-            }
-            intraVmContext = getIntraVmContext(env);
-        }
-        return intraVmContext;
+        init(env);
+        return getIntraVmContext(env);
     }
 
+    private void init(Hashtable env) throws javax.naming.NamingException {
+        if (openejb != null) {
+            return;
+        }
+        try {
+            Properties properties = new Properties();
+            properties.putAll(env);
+            init(properties);
+        } catch (Exception e) {
+            throw (NamingException) new NamingException("Attempted to load OpenEJB. " + e.getMessage()).initCause(e);
+        }
+    }
+    
     public void init(Properties properties) throws Exception {
         if (openejb != null) return;
         openejb = new OpenEJBInstance();

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java?rev=594246&r1=594245&r2=594246&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/InitContextFactory.java Mon Nov 12 10:20:54 2007
@@ -30,28 +30,40 @@
 
 public class InitContextFactory implements javax.naming.spi.InitialContextFactory {
 
+    private static Context ejbContext;
+
     public Context getInitialContext(Hashtable env) throws javax.naming.NamingException {
         if (!org.apache.openejb.OpenEJB.isInitialized()) {
             initializeOpenEJB(env);
         }
 
-
         String user = (String) env.get(Context.SECURITY_PRINCIPAL);
         String pass = (String) env.get(Context.SECURITY_CREDENTIALS);
+        String realmName = (String) env.get("openejb.authentication.realmName");
 
         if (user != null && pass != null){
             try {
                 SecurityService securityService = SystemInstance.get().getComponent(SecurityService.class);
-                Object identity = securityService.login(user, pass);
+                Object identity = null;
+                if (realmName == null) {
+                    identity = securityService.login(user, pass);
+                } else {
+                    identity = securityService.login(realmName, user, pass);
+                }
                 securityService.associate(identity);
             } catch (LoginException e) {
                 throw (AuthenticationException) new AuthenticationException("User could not be authenticated: "+user).initCause(e);
             }
         }
-        ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-        Context context = containerSystem.getJNDIContext();
-        context = (Context) context.lookup("java:openejb/ejb");
-        return context;
+
+        if (ejbContext == null){
+            ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+            Context context = containerSystem.getJNDIContext();
+            context = (Context) context.lookup("java:openejb/ejb");
+            ejbContext = context;
+        }
+
+        return ejbContext;
 
     }