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;
}