Настройка поддержки Jetty JSP во встроенном режиме в проекте Maven
Я могу посетить .html страницы с Jetty, но когда я нахожусь на странице .jsp, я получаю:
0 13:21:13/[INFO] Нет поддержки JSP. Проверьте, что JSP-банки находятся в lib/jsp и что указан параметр JSP to start.jar
Я добавил следующие зависимости:
<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>
Выполняет ли это выполнение "проверки того, что JSP-банки в lib/jsp" часть сообщения об ошибке?
Кроме того, я понятия не имею, что означает "проверить, что параметр JSP был указан для start.jar" означает в этом контексте. У меня есть следующее:
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();
}
Ответы
Ответ 1
Я получил его для работы, добавив зависимость JB Mortbay (это в нотации Gradle, но вы получите идею):
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'
Там большая запись доступна в моем блоге.
Ответ 2
Я знаю, что об этом ответили некоторое время назад. Я не мог получить ответ от Бена Макканна, чтобы работать на меня. Тем не менее, мне повезло, добавив поддержку JSP непосредственно к Jetty, добавив
<!--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>
Странно, это не поддерживалось версией 6.1.24, которую я изначально имел.
Итак, в итоге мой pom.xml выглядит так:
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>
и мой начальный класс (который я добавил в папку \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();
}
}
}
}
}
Ответ 3
Я сделал это, не используя банки из дистрибутива Jetty, используя только зависимости 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>
Ответ 4
Основываясь на Simon Huet отличный ответ, вот мой прием:
<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>
Ответ 5
После прочтения этой страницы stackoverflow (nice job), а также http://wiki.eclipse.org/Jetty/Howto/Configure_JSP, я, наконец, получил это и для работы. Поскольку моя конфигурация немного отличается, я думал, что буду возвращаться. У меня встроенная установка Jetty 8 без компилятора javac, и я получил ее для работы с использованием компилятора eclipse и установки системного свойства перед созданием сервера, например:
System.setProperty("org.apache.jasper.compiler.disablejsr199", "true");
Server server = new Server();
И используя следующую конфигурацию 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>
Ответ 6
Jetty 9.1.3, http://www.eclipse.org/jetty/documentation/current/configuring-jsp.html, и просто добавление jetty-jsp сработало для меня (плюс версия web.xml из URL-адреса). Не нужно добавлять банки из-за пределов группы JetIt (т.е. Mortbay).