web-dev-qa-db-fra.com

Serveur Jetty intégré - AUCUN support JSP pour /, n'a pas trouvé org.Apache.jasper.servlet.JspServlet

J'ai le code suivant pour utiliser un serveur Jetty intégré à côté d'un servlet simple et d'une page Web .jsp. Cependant, après avoir compilé et exécuté le code:

javac -cp lib/servlet-api.jar:lib/jetty-all.jar com/test/MyServlet.Java 
javac -cp lib/servlet-api.jar:lib/jetty-all.jar com/test/ServerMain.Java 
Java -cp .:lib/servlet-api.jar:lib/jetty-all.jar com/test/ServerMain

Je reçois une erreur:

INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.Apache.jasper.servlet.JspServlet

Et naviguer vers /index.jsp donne une erreur 500.

HTTP ERROR 500
Problem accessing /index.jsp. 
Reason:
JSP support not configured

J'ai lu ceci post mais je ne pense pas que la solution s'applique ici car j'utilise Jetty embedded plutôt que d'utiliser le fichier start.jar.

Comment puis-je résoudre cette erreur afin que le serveur s'exécute et serve correctement les pages .jsp?

ServerMain.Java

package com.test;

import org.Eclipse.jetty.server.Server;
import org.Eclipse.jetty.webapp.WebAppContext;

public class ServerMain {

    public static void main(String[] args) throws InterruptedException {

        Server server = new Server(8080);
        WebAppContext webApp = new WebAppContext();
        webApp.setDescriptor("web.xml");
        webApp.setResourceBase("");
        webApp.setParentLoaderPriority(true);
        server.setHandler(webApp);

        try {
            server.start();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
        server.join();
    }
}

MyServlet.Java

package com.test;

import Java.io.IOException;
import Java.util.Properties;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, this is a testing servlet. \n\n");
        Properties p = System.getProperties();
        p.list(resp.getWriter());

    }
}

web.xml

   <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC "-//Oracle Corporation//DTD Web Application 2.3//EN" "http://Java.Sun.com/dtd/web-app_2_3.dtd">

<web-app xmlns="http://Java.Sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Voici la structure de mon projet:

webapp
----com
    ----test
        ----MyServlet.Java
        ----ServerMain.Java
        ----index.jsp
        ----web.xml
----lib
    ----jetty-all.jar
    ----servlet-api.jar  
5
user2998046

Il semble qu'il vous manque un fichier JAR contenant la classe org.Apache.jasper.servlet.JspServlet. Téléchargez un fichier JAR le contenant (regardez ici ) et ajoutez-le à votre chemin de classe De plus, vous devriez également remplacer com/test/ServerMain par le nom réel de la classe, com.test.ServerMain. Votre déclaration Java devrait ressembler à ceci:

Java -cp ".:lib/servlet-api.jar:lib/jetty-all.jar:lib/Apache-jasper.jar" com.test.ServerMain
2
msrd0

Incidemment, il existe un projet github, géré par le projet Jetty, démontrant la prise en charge de JSP dans Jetty Embedded.

https://github.com/jetty-project/embedded-jetty-jsp

2
Joakim Erdfelt

Vous n'avez pas encore essayé d'implanter Jetty, mais lorsque vous utilisez Jetty 9.3 en tant que service, vous devez ajouter le support JSP.

cd $JETTY_BASE
$Java_HOME/bin/Java -jar $JETTY_HOME/start.jar --add-to-startd=jsp

JETTY_BASE est votre dossier dans lequel vous déployez une application distincte de JETTY_HOME. Je suppose donc que Jetty intégrée aurait besoin d'une configuration similaire.

2
Nux