import org.apache.naming.ContextBindings;
import org.apache.catalina.LifecycleException;
-import org.apache.catalina.ServerFactory;
import org.apache.catalina.core.StandardServer;
import org.apache.catalina.util.StringManager;
context = ContextBindings.getClassLoader();
context = (Context) context.lookup("comp/env");
} else {
- StandardServer server =
- (StandardServer) ServerFactory.getServer();
- context = server.getGlobalNamingContext();
+ context =
+ ((StandardServer)getServer()).getGlobalNamingContext();
}
DataSource dataSource = (DataSource)context.lookup(dataSourceName);
return dataSource.getConnection();
import org.apache.catalina.Container;
import org.apache.catalina.Context;
+import org.apache.catalina.Engine;
import org.apache.catalina.Globals;
+import org.apache.catalina.Host;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Realm;
+import org.apache.catalina.Server;
+import org.apache.catalina.Service;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.core.ContainerBase;
protected abstract Principal getPrincipal(String username);
+ /**
+ * Return the Server object that is the ultimate parent for the container
+ * with which this Realm is associated. If the server cannot be found (eg
+ * because the container hierarchy is not complete), <code>null</code> is
+ * returned.
+ */
+ protected Server getServer() {
+ Container c = container;
+ if (c instanceof Context) {
+ c = c.getParent();
+ }
+ if (c instanceof Host) {
+ c = c.getParent();
+ }
+ if (c instanceof Engine) {
+ Service s = ((Engine)c).getService();
+ if (s != null) {
+ return s.getServer();
+ }
+ }
+ return null;
+ }
+
+
// --------------------------------------------------------- Static Methods
import org.apache.catalina.Group;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Role;
-import org.apache.catalina.ServerFactory;
import org.apache.catalina.User;
import org.apache.catalina.UserDatabase;
import org.apache.catalina.core.StandardServer;
super.start();
try {
- StandardServer server = (StandardServer) ServerFactory.getServer();
- Context context = server.getGlobalNamingContext();
+ Context context =
+ ((StandardServer)getServer()).getGlobalNamingContext();
database = (UserDatabase) context.lookup(resourceName);
} catch (Throwable e) {
containerLog.error(sm.getString("userDatabaseRealm.lookup",