2010-11-20 27 views
20

que puede visitar las páginas html con embarcadero, pero cuando me visita una página .jsp me sale:Configuración del soporte de JSP en el embarcadero modo incrustado en el proyecto Maven

0 13:21:13/[INFO] n Soporte JSP. Compruebe que frascos JSP están en lib/JSP y que la opción JSP se ha especificado a start.jar

que añadió 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> 

¿Eso cumplir con el "cheque que los jar JSP están en lib/jsp "¿parte del mensaje de error?

Además, no tengo idea de lo que "compruebe que la opción JSP se ha especificado a start.jar" significa en este contexto. Tengo el 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(); 
    } 

Respuesta

17

lo tengo para trabajar mediante la adición de la dependencia Mortbay JSP (esto es en notación Gradle, pero se entiende 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 larger writeup available on my blog.

+1

Jetty 8 admite el jsp 2.2. En el embarcadero hightide 8.0.0 distribución que incluyen lo siguiente en el directorio jsp: '' com.sun.el_2.2.0.v201105051105.jar' javax.el_2.2.0.v201105051105.jar' 'javax.servlet. jsp.jstl_1.2.0.v201004190952.jar '' javax.servlet.jsp_2.2.0.v201103241009.jar'' org.apache.jasper.glassfish_2.2.2.v201108011116.jar'' org.apache.taglibs.standard.glassfish_1.2.0 .v201004190952.jar' Supongo que esto le dará soporte para jsp 2.2. La desventaja es que esta es una gran cantidad de jarras para realizar un seguimiento. Me pregunto cuándo el embarcadero tendrá un embarcadero-jsp.jar? ¡Sería bueno! –

+1

En realidad, la distribución del muelle también tiene estas dependencias. Se pueden encontrar en la siguiente url: [http://download.eclipse.org/jetty/orbit] El pom de la distribución del muelle descarga los contenedores en esa url y los empaqueta en el directorio lib de la distribución. –

+1

Wow, probé todas las soluciones a continuación, lo que causó una gran cantidad de clases faltantes: ExpressionFactory y más. Este fue el único que simplemente funcionó –

10

Sé que esto ha sido contestada hace un tiempo. No pude obtener la respuesta de Ben McCann para que trabaje para mí. Sin embargo, tuve la suerte mediante la adición de soporte de JSP directamente al embarcadero añadiendo

<!--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> 

Curiosamente, esto no fue apoyado por la versión 6.1.24 que tenía originalmente.

Así que en total, que hizo que mi pom.xml aspecto:

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 he añadido 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 de inicio {

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(); 
      } 
     } 
    } 
} 

}

+0

Esto solo funciona para Jetty 6 y mayores. Eso es bastante antiguo, ya que Jetty 8 ya casi se ha agotado. Actualicé mi respuesta para proporcionar una mejor solución, así que eche otro vistazo. –

+0

Esta sigue siendo una respuesta valiosa, ya que p. Solr se embarca con el embarcadero 6. Puede simplemente agregar 'org.mortbay.jetty: jsp-2.1: 6.1.14' a su POM y combinarlo con cualquier versión de embarcadero 6. El Maven central no tiene la versión 6.1.26 de jsp-2.1. – Maddin

10

lo he hecho sin utilizar los frascos de la distribución del embarcadero, el uso de las dependencias única 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> 
6

Basándome en 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> 
1

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 así. Dado que mi configuración es ligeramente diferente, pensé que contribuiría de nuevo.Tengo una instalación incrustada embarcadero 8 sin el compilador 'javac', y lo tengo que trabajar utilizando el compilador de Eclipse y el establecimiento de la propiedad del sistema antes de crear el servidor, así:

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

Y utilizando la siguiente experto configuración:

<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> 
Cuestiones relacionadas