-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

All,

Just a bump since I didn't get any responses other than a question from
Chuck.

Mark? Filip? Bill? Tim? I'd even go for a flame from Remy. ;)

Thanks,
- -chris

On 2/5/2009 4:49 PM, Christopher Schultz wrote:
> All,
> 
> Back in July, I asked about RealmBase requiring a Container object in
> order to function properly. This has to do with using securityfilter
> with Tomcat's built-in Realms.
> 
> Here is a reference to the original thread:
> http://marc.info/?t=121751323100003&r=1&w=2
> 
> I've started playing around with implementing a trivial ContainerBase
> subclass and I'm running into trouble again so I was hoping that some of
> the TC devs could weigh-in.
> 
> My trivial ContainerBase subclass looks like this:
> 
>     private static class DummyContainer
>         extends org.apache.catalina.core.ContainerBase
>     {
> 
>         public String getInfo()
>         {
>             return "securityfilter_dummy_container/1.0";
>         }
>     }
> 
> ...and I essentially create a new Realm object and then call
> Realm.setContainer(). It looks like I'm getting farther than I was
> before, but I'm still getting errors deep down in Tomcat's internals.
> I'm getting an NPE in the DataSourceRealm (which is what I'm using as an
> example):
> 
> java.lang.NullPointerException
>         at
> org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:402)
>         at
> org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:283)
>         at
> org.securityfilter.realm.catalina.CatalinaRealmAdapter.authenticate(CatalinaRealmAdapter.java:105)
> 
> The method in question (DataSourceRealm.open) looks like this:
> 
>     protected Connection open() {
> 
>         try {
>             Context context = null;
>             if (localDataSource) {
>                 context = ContextBindings.getClassLoader();
>                 context = (Context) context.lookup("comp/env");
>             } else {
>                 StandardServer server =
>                     (StandardServer) ServerFactory.getServer();
>                 context = server.getGlobalNamingContext();
>             }
>             DataSource dataSource =
> (DataSource)context.lookup(dataSourceName);   /// THIS IS LINE 402
>             return dataSource.getConnection();
>         } catch (Exception e) {
>             // Log the problem for posterity
> 
> containerLog.error(sm.getString("dataSourceRealm.exception"), e);
>         }
>         return null;
>     }
> 
> Since I've included catalina.jar and catalina-optional.jar in my webapp,
> classes like ServerFactory and friends haven't been initialized since
> they are dormant in my webapp. The "real" ServerFactory class being
> loaded by Tomcat's server ClassLoader are, I'm sure, doing quite well.
> 
> My question is this: how much of Tomcat's internals do I have to mock-up
> in order to get a Realm working outside of a legitimately running
> server? That sound like a ridiculous question, but securityfilter used
> to work with Tomcat Realms back in the day (4.x?) and now they don't
> (definitely 5.5, possibly 5.0 and 6.0 as well) because of this reliance
> upon more of Tomcat internals.
> 
> Should I continue down this road of trying to prop-up a Tomcat skeleton
> server inside the webapp's space, or would it be better to discontinue
> support for this feature?
> 
> Thanks,
> -chris

- ---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkmSMawACgkQ9CaO5/Lv0PDLpQCfbcL+tfBeYvtkLs0Hl7dqaKmj
vbYAn0Djma8LF8+bv1r3mVovuc572Cb3
=ZW3z
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to