Tomcat 6 настроенное царство - PullRequest
1 голос
/ 18 марта 2010

Я пытаюсь написать свое собственное Царство для аутентификации моих пользователей. Я написал класс, расширяющий org.apache.catalina.realm.RealmBase, скомпилированный в файл .jar и поместив его в библиотеку / lib. Затем я добавил это в server.xml:

<Realm className="wstest.tomcat.security.MyRealm"
             resourceName="myrealm"/>

Tomcat, похоже, не видит мою новую банку ... Когда я запускаю Tomcat, я получаю:

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)

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Какую папку / lib вы использовали? Тот, что в вашем WebProject, или тот, что в tomcat? Я сам зеленый кот, но насколько я знаю, вы должны поместить свой JAR в последний.

0 голосов
/ 21 ноября 2013

server.xml загружается до веб-приложений. Поэтому tomcat должен найти ваш класс реализации Realm, прежде чем он загрузит JAR-файлы вашего приложения. Поместите JAR в tomcat / lib, и это должно решить проблему.

Вам также необходимо знать об одном недочете: ничего не регистрируйте в конструкторе Realm. Поле containerLog там не установлено, поэтому вы получите неприятный NPE. loadInternal () устанавливает параметр containerLog.

...