Configuring Jetty JSP support in embedded mode in Maven project

前端 未结 6 1451
遥遥无期
遥遥无期 2021-01-30 05:50

I can visit .html pages with Jetty, but when I visit a .jsp page I get:

0 13:21:13 / [INFO] No JSP support. Check that JSP jars are in lib/jsp and th

相关标签:
6条回答
  • 2021-01-30 06:07

    I have done it without using the jars from the Jetty distribution, using only Maven dependencies:

    <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>
    
    0 讨论(0)
  • 2021-01-30 06:09

    I know this has been answered a while ago. I could not get the answer from Ben McCann to work for me. However, i had luck by adding JSP support directly to Jetty by adding

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

    Strangely, this was not supported by the version 6.1.24 I originally had.

    So in total, that made my pom.xml look like this:

    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>
    

    and my start class (which i added in folder \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  
     */
    

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

    }

    0 讨论(0)
  • 2021-01-30 06:17

    Jetty 9.1.3, http://www.eclipse.org/jetty/documentation/current/configuring-jsp.html, and just adding jetty-jsp worked for me (plus the web.xml config from the url). No need to add jars from outside the jetty groupId (ie. mortbay).

    0 讨论(0)
  • 2021-01-30 06:22

    I got it to work by adding the Mortbay JSP dependency (this is in Gradle notation, but you get the 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'
    

    There's a larger writeup available on my blog.

    0 讨论(0)
  • 2021-01-30 06:22

    Building upon Simon Huet's excellent answer, here's my take:

    <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>
    
    0 讨论(0)
  • 2021-01-30 06:30

    After reading this stackoverflow page (nice job) as well as http://wiki.eclipse.org/Jetty/Howto/Configure_JSP, I finally got this to work as well. Since my config is slightly different, I thought I'd contribute back. I have an embedded Jetty 8 installation without the 'javac' compiler, and I got it to work by using the eclipse compiler and setting the system property before creating the server, like this:

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

    And using the following maven configuration:

    <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>
    
    0 讨论(0)
提交回复
热议问题