Pid wrote:
> On 22/7/09 19:32, Mitch Claborn wrote:
>> Pid wrote:
>>> On 21/7/09 23:23, Mitch Claborn wrote:
>>>> I am toying with the idea of writing my own Realm for authentication.
>>>> Much of the code and structures that I need are already present in the
>>>> web application.  Is there any way for the Realm to access Java
>>>> objects
>>>> from the web application?  They don't appear to share the same class
>>>> loader.
>>>>
>>>> As an alternative is there a mechanism for providing the functionality
>>>> of a Realm, but within the web application structure?
>>> You can define the Realm in your context.xml, (which of course you'll
>>> be configuring in the META-INF dir of your web-app, hint hint).
>>>
>>> I think this will load classes from your web-app classloader.
>>>
>>>
>>> N.B. Check out the "localDataSource" attribute, if you're also using a
>>> web-app specific DataSource.
>>>
>>> http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#DataSourceRealm
>>>
>>>
>>> p
>>>
>> I found that I can define the Realm in the conext.xml in my WEB-INF, but
>> it is not being located - getting java.lang.ClassNotFoundException when
>> the web app deploys/starts.  I've triple checked that the class files
>> are there in WEB-INF/classes.  I also tried putting in a jar in
>> WEB-INF/ilb.  I'm guessing that the Realm is still being loaded in a
>> different class loader.  I would guess the Realm is loaded in the
>> "common" class loader, as defined at
>> http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html.
>
> What is the exact CNFE and is there a stacktrace to go with it?
>
> You've only got the class in one place at any one time I presume?
>
> It's also spelled correctly in the context.xml definition? (you could
> post that file here, sanitised for passwords if present).
>
> p
>
everything looks correctly spelled to me.  That class only in one place.

find . -name MyRealm.class
./MMWebServer/WEB-INF/classes/com/csc/mm/web/tomcat/MyRealm.class

ls webapps/MMWebServer/WEB-INF/classes/com/csc/mm/web/tomcat/
MyRealm.class  MyRealm$MyPrincipal.class

jarfind MyRealm.class
(no results)


context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="">
    <Manager pathname="" />
    <Realm className="com.csc.mm.web.tomcat.MyRealm" />
</Context>

Jul 23, 2009 8:40:10 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive MMWebServer.war
Jul 23, 2009 8:40:10 AM org.apache.tomcat.util.digester.Digester
startElement
SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: com.csc.mm.web.tomcat.MyRealm
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
        at
org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
        at org.apache.tomcat.util.digester.Rule.begin(Rule.java:153)
        at
org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1358)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:504)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1315)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2723)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:624)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:486)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:810)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:740)
        at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:110)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
        at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
        at
org.apache.tomcat.util.digester.Digester.parse(Digester.java:1644)
        at
org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:789)
        at
org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:732)
        at
org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:1009)
        at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:279)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at
org.apache.catalina.core.StandardContext.init(StandardContext.java:5398)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4177)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
        at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850)
        at
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724)
        at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
        at
org.apache.catalina.startup.HostConfig.check(HostConfig.java:1274)
        at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:296)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
        at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
        at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
        at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
        at java.lang.Thread.run(Thread.java:636)



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

Reply via email to