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