jsp jetty embedded-jetty

Configurando el soporte de Jetty JSP en modo incrustado en el proyecto Maven



embedded-jetty (6)

Después de leer esta página Stackoverflow (buen trabajo), así como http://wiki.eclipse.org/Jetty/Howto/Configure_JSP , finalmente conseguí que esto funcione también. Dado que mi configuración es ligeramente diferente, pensé que contribuiría de nuevo. Tengo una instalación incrustada de Jetty 8 sin el compilador ''javac'', y la hice funcionar usando el compilador de eclipse y estableciendo la propiedad del sistema antes de crear el servidor, así:

System.setProperty("org.apache.jasper.compiler.disablejsr199", "true"); Server server = new Server();

Y usando la siguiente configuración de maven:

<dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_3.0_spec</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.eclipse.jetty.orbit</groupId> <artifactId>javax.el</artifactId> <version>2.2.0.v201108011116</version> </dependency> <dependency> <groupId>org.eclipse.jetty.orbit</groupId> <artifactId>javax.servlet.jsp</artifactId> <version>2.2.0.v201112011158</version> </dependency> <dependency> <groupId>org.eclipse.jetty.orbit</groupId> <artifactId>javax.servlet.jsp.jstl</artifactId> <version>1.2.0.v201105211821</version> </dependency> <dependency> <groupId>org.eclipse.jetty.orbit</groupId> <artifactId>org.apache.jasper.glassfish</artifactId> <version>2.2.2.v201112011158</version> </dependency> <dependency> <groupId>org.eclipse.jetty.orbit</groupId> <artifactId>org.apache.taglibs.standard.glassfish</artifactId> <version>1.2.0.v201112081803</version> </dependency> <dependency> <groupId>org.eclipse.jetty.orbit</groupId> <artifactId>org.eclipse.jdt.core</artifactId> <version>3.7.1</version> </dependency>

Puedo visitar páginas .html con Jetty, pero cuando visito una página .jsp obtengo:

0 13:21:13 / [INFO] Sin soporte JSP. Compruebe que los jar JSP estén en lib / jsp y que la opción JSP se haya especificado para start.jar

Agregué lo siguiente como dependencias:

<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>8.0.0.M1</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency>

¿Cumple eso la parte de "comprobar que JSP jars están en lib / jsp" del mensaje de error?

Además, no tengo idea qué significa "verificar que la opción JSP se haya especificado para start.jar" en este contexto. Tengo lo siguiente:

public static void main(String[] args) throws Exception { Server server = new Server(); SelectChannelConnector connector = new SelectChannelConnector(); connector.setPort(8080); server.addConnector(connector); WebAppContext webApp = new WebAppContext(); webApp.setContextPath("/"); webApp.setWar("src/main/webapp"); server.setHandler(webApp); server.start(); server.join(); }



Lo hice funcionar agregando la dependencia Mortbay JSP (esto está en la notación Gradle, pero entiendes la idea):

compile ''org.eclipse.jetty:jetty-io:8.0.0.M3'' compile ''org.eclipse.jetty:jetty-server:8.0.0.M3'' compile ''org.eclipse.jetty:jetty-servlet:8.0.0.M3'' compile ''org.eclipse.jetty:jetty-util:8.0.0.M3'' compile ''org.eclipse.jetty:jetty-webapp:8.0.0.M3'' compile ''org.mortbay.jetty:jsp-2.1-glassfish:2.1.v20100127''

Hay una descripción más grande disponible en mi blog .


Lo hice sin usar los frascos de la distribución Jetty, usando solo dependencias Maven:

<properties> <jetty.version>8.1.0.RC0</jetty.version> <glassfish.javax.version>2.2.3</glassfish.javax.version> <glassfish.javax-impl.version>2.2</glassfish.javax-impl.version> <glassfish.jstl.version>1.2</glassfish.jstl.version> </properties> <dependencies> <!-- Jetty Webapp--> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>${jetty.version}</version> </dependency> <!-- JSP Support --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.servlet.jsp</artifactId> <version>${glassfish.javax.version}</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jsp-impl</artifactId> <version>${glassfish.javax-impl.version}</version> </dependency> <!-- EL Support --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.el</artifactId> <version>${glassfish.javax.version}</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>el-impl</artifactId> <version>${glassfish.javax-impl.version}</version> </dependency> <!-- JSTL Support --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${glassfish.jstl.version}</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jstl-impl</artifactId> <version>${glassfish.jstl.version}</version> </dependency> </dependencies>


Sé que esto ha sido respondido hace un tiempo. No pude obtener la respuesta de Ben McCann para que trabaje para mí. Sin embargo, tuve suerte al agregar soporte JSP directamente a Jetty al agregar

<!--jsp support for jetty, add the 2 following --> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1</artifactId> <version>6.1.14</version> <type>jar</type> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-api-2.1</artifactId> <version>6.1.14</version> <type>jar</type> </dependency>

Extrañamente, esto no fue respaldado por la versión 6.1.24 que tuve originalmente.

Entonces, en total, eso hizo que mi pom.xml se viera así:

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<groupId>wikiproject</groupId> <artifactId>wikiproject</artifactId> <version>1.0-SNAPSHOT</version> <properties> <jetty.version>6.1.14</jetty.version> </properties> <!-- Jetty dependencies --> <dependencies> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>${jetty.version}</version> <type>jar</type> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> <type>jar</type> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-plus</artifactId> <version>${jetty.version}</version> <type>jar</type> </dependency> <!--jsp support for jetty, add the 2 following --> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1</artifactId> <version>${jetty.version}</version> <type>jar</type> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-api-2.1</artifactId> <version>${jetty.version}</version> <type>jar</type> </dependency> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant-antlr</artifactId> <version>1.7.1</version> </dependency> </dependencies>

y mi clase de inicio (que agregué en la carpeta /src/test/java/com/company/wikiproject )

package com.company.wikiproject; import org.mortbay.jetty.Connector; import org.mortbay.jetty.Server; import org.mortbay.jetty.bio.SocketConnector; import org.mortbay.jetty.webapp.WebAppContext; /** * User: Jesper Rønn-Jensen * start wiki pages */

clase pública Start {

public static void main(String[] args) { Server jettyServer = null; try { jettyServer = new Server(); SocketConnector conn = new SocketConnector(); conn.setPort(8080); jettyServer.setConnectors(new Connector[]{conn}); WebAppContext context = new WebAppContext(); context.setContextPath("/"); context.setWar("src/main/webapp"); jettyServer.setHandler(context); jettyServer.start(); } catch (Exception ignore) { if (jettyServer != null) { try { jettyServer.stop(); } catch (Exception e1) { e1.printStackTrace(); } } } }

}


Sobre la base de la excelente respuesta de Simon Huet, aquí está mi opinión:

<properties> <bundle.name>nsb-${project.version}</bundle.name> <glassfish.javax.version>2.2.3</glassfish.javax.version> <glassfish.javax-jstl.version>1.2.1</glassfish.javax-jstl.version> </properties> <dependencies> <!-- Jetty Webapp --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>${jetty.version}</version> </dependency> <!-- JSP Support --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.servlet.jsp</artifactId> <version>${glassfish.javax.version}</version> </dependency> <!-- EL Support --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.el</artifactId> <version>${glassfish.javax.version}</version> </dependency> <!-- JSTL Support --> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.servlet.jsp.jstl</artifactId> <version>${glassfish.javax-jstl.version}</version> <exclusions> <exclusion> <artifactId>jstl-api</artifactId> <groupId>javax.servlet.jsp.jstl</groupId> </exclusion> </exclusions> </dependency> </dependencies>