1

Java で 1 つの Web ベース アプリケーションを作成し、Java の ValveBase クラスを使用しました。コードは次のとおりです。

public class RenewSessionValve extends ValveBase {

    private String authenticationUrl = "j_security_check";

    @Override
    public void invoke(Request req, Response res) throws IOException,
            ServletException {
        // TODO Auto-generated method stub
        System.out.println("invoke in SessionFixationValve "+req.getRequestURI());
        if (req.getRequestURI().contains(authenticationUrl)) {

        // save old session
        Session oldSession = req.getSessionInternal(true);
        SavedRequest saved = (SavedRequest) oldSession.
        getNote(Constants.FORM_REQUEST_NOTE);
        System.out.println("before invalidating session");
        // invalidate old session
        req.getSession(true).invalidate();
        req.setRequestedSessionId(null);
        req.clearCookies();

        System.out.println("after invalidating session");
        // create a new session and set it to the request
        Session newSession = req.getSessionInternal(true);
        req.setRequestedSessionId(newSession.getId());

        System.out.println("saved obj is : "+saved);
        // copy data from the old session
        // to the new one
        if (saved != null) {
        newSession.setNote(Constants.FORM_REQUEST_NOTE, saved);
        }

        }
        System.out.println("before invoke");
        // after processing the request forward it
        getNext().invoke(req, res);
        }   
}

今、私はファイルをコンパイルし、そのプロジェクトのjarファイルを作成して、サーバーのlibフォルダーに入れました。私が変更したserver.xmlファイルの一部:

<Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false" deployOnStartup="false" deployXML="false">
        <Valve className="com.cmc.RenewSessionValve" />
</Host>

今、私は 1 つの新しいプロジェクトを作成して実行します。以下のようなエラーが表示されます:

SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: com.cmc.RenewSessionValve
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    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(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:524)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Jun 23, 2014 10:33:16 AM org.apache.catalina.startup.Catalina load
WARNING: Catalina.start using conf/server.xml: 
java.lang.ClassNotFoundException: com.cmc.RenewSessionValve
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806)
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1359)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:524)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: com.cmc.RenewSessionValve
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    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)
    ... 20 more
Jun 23, 2014 10:33:16 AM org.apache.tomcat.util.digester.Digester startElement
4

2 に答える 2

-1

今後の参考のために - カスタム バルブのソース コードを jar ファイルにエクスポートし、libTomcat ディレクトリのフォルダー内に配置する必要があります。(プロジェクト ディレクトリとは異なります)

そうしないと、Tomcat はカスタム クラスを見つけることができず、スローされます。ClassNotFoundException

于 2015-11-29T07:42:47.797 に答える