Как настроить пользовательское царство JDBC в Apache Tomcat 9?. Я использую Eclipse 2018-12 - PullRequest
0 голосов
/ 05 февраля 2019

Это мой класс пользовательских областей с простым хэшированием.

package login;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.Principal;

import org.apache.catalina.realm.JDBCRealm;

public class CryptRealm extends JDBCRealm{
    public Principal authenticate(String username, String credentials)
      {
        String hashedPassword = getPassword(username);
        System.out.println(hashedPassword);
        MessageDigest md;
        try {
            md = MessageDigest.getInstance("MD5");
        byte[] mdbyte = md.digest(credentials.getBytes());
        BigInteger number = new BigInteger(1,mdbyte);
        String hashtext = number.toString(16);
        while(hashtext.length()<32) {
            hashtext = "0" + hashtext;
        }
        if(!hashtext.equals(hashedPassword)) {
            return getPrincipal(username);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }  
        return null;
      }
}

Я также упомянул имя класса области в context.xml (который я создал вручную) в папке META-INF.

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Realm className="login.CryptRealm"/>
</Context>

Это бросает меня ClassNotFoundException:

---------------------------------консоль -------------------------------------

Feb 05, 2019 8:56:28 AM org.apache.tomcat.util.digester.Digester startElement
SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: login.CryptRealm
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:116)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1174)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
    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:1339)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1439)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:566)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:611)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)

Feb 05, 2019 8:56:28 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from 
[E:\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\server.xml]
    org.xml.sax.SAXParseException; systemId: file:/E:/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/server.xml; lineNumber: 152; columnNumber: 38; Error at (152, 38) : login.CryptRealm
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1862)
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1894)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1177)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
        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:1339)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1439)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:566)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:611)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
    Caused by: java.lang.ClassNotFoundException: login.CryptRealm
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:116)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1174)
        ... 20 more

    Feb 05, 2019 8:56:28 AM org.apache.catalina.startup.Catalina start
    SEVERE: Cannot start server, server instance is not configured

Пожалуйста, помогите мне с этим .Что я должен сделать, чтобы использовать свой собственный класс царства.

...