首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat6定制领域

Tomcat6定制领域
EN

Stack Overflow用户
提问于 2010-03-18 22:46:32
回答 2查看 1.4K关注 0票数 1

我正在尝试编写我自己的领域来验证我的用户。我编写了一个扩展org.apache.catalina.realm.RealmBase的类,将其编译为.jar文件并将其放入/lib库中。然后我将这个添加到server.xml中:

代码语言:javascript
复制
<Realm className="wstest.tomcat.security.MyRealm"
             resourceName="myrealm"/>

Tomcat似乎没有“看到”我的新罐子。当我启动Tomcat时,我得到:

代码语言:javascript
复制
ERROR main org.apache.commons.digester.Digester - Begin event threw exception
java.lang.ClassNotFoundException: wstest.tomcat.security.MyRealm
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    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:1356)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:526)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:560)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
EN

回答 2

Stack Overflow用户

发布于 2010-11-08 22:44:13

您使用过哪个/lib文件夹?你WebProject里的那个还是tomcat里的那个?我自己也是个新手,但据我所知,你应该把你的罐子放在后一个罐子里。

票数 2
EN

Stack Overflow用户

发布于 2013-11-21 17:57:55

server.xml在the应用程序之前加载。因此,tomcat需要在加载您的应用程序JAR文件之前找到您的领域实现类。将JAR放在tomcat/lib中,这样就可以解决这个问题。

您还需要注意一个问题:不要在Realm构造函数中记录任何内容。containerLog字段没有在这里设置,所以你会得到一个讨厌的NPE。loadInternal()设置containerLog。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2470688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档