2010-11-20 34 views
20

Tôi có thể truy cập trang .html với Jetty, nhưng khi tôi ghé thăm một trang .jsp tôi nhận được:Cấu hình Jetty JSP hỗ trợ trong chế độ nhúng trong dự án Maven

0 13:21:13/[INFO] Không có Hỗ trợ JSP. Kiểm tra xem JSP lọ là trong lib/jsp và rằng tùy chọn JSP đã được xác định để start.jar

Tôi được thêm vào sau như phụ thuộc:

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

Liệu rằng thực hiện "kiểm tra rằng JSP jars là trong lib/jsp "một phần của thông báo lỗi?

Ngoài ra, tôi không biết "kiểm tra xem tùy chọn JSP đã được chỉ định cho start.jar" có nghĩa là trong ngữ cảnh này hay không. Tôi có những điều sau đây:

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

Trả lời

17

tôi đã nhận nó để làm việc bằng cách thêm các phụ thuộc Mortbay JSP (đây là trong ký hiệu Gradle, nhưng bạn sẽ có được ý tưởng):

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' 

Có một larger writeup available on my blog.

+1

Cầu tàu 8 hỗ trợ jsp 2.2. Trong bản phân phối hightide 8.0.0, chúng bao gồm các phần sau trong thư mục 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' Tôi giả định điều này sẽ cung cấp cho bạn hỗ trợ jsp 2.2. Nhược điểm là rất nhiều lọ để theo dõi. Tôi tự hỏi khi nào cầu tàu sẽ có jetty-jsp.jar? Nó chắc chắn sẽ tốt đẹp! –

+1

Trên thực tế, phân phối cầu tàu cũng có những phụ thuộc này. Chúng có thể được tìm thấy tại url sau: [http://download.eclipse.org/jetty/orbit] pom phân phối của jetty tải các jars tại url đó và gói chúng vào thư mục lib của phân phối. –

+1

Wow, tôi đã thử tất cả các giải pháp dưới đây đã gây ra rất nhiều lớp thiếu: ExpressionFactory và hơn thế nữa. Đây là người duy nhất chỉ đơn giản là làm việc –

10

Tôi biết điều này đã được trả lời trước đây. Tôi không thể nhận được câu trả lời từ Ben McCann để làm việc cho tôi. Tuy nhiên, tôi đã may mắn bằng cách thêm hỗ trợ JSP trực tiếp vào Jetty bằng cách thêm

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

Thật kỳ lạ, điều này không được hỗ trợ bởi phiên bản 6.1.24 Ban đầu tôi có.

Vì vậy, trong tổng số, khiến pom.xml của tôi trông như thế này:

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> 

và lớp bắt đầu của tôi (mà tôi thêm vào trong thư mục \src\test\java\com\company\wikiproject)

01.
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 Bắt đầu {

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

Điều này chỉ hoạt động cho Jetty 6 trở lên. Đó là khá cũ kể từ khi Jetty 8 là gần như bây giờ. Tôi đã cập nhật câu trả lời của mình để cung cấp giải pháp tốt hơn, vì vậy hãy xem xét lại. –

+0

Đây vẫn là câu trả lời có giá trị, ví dụ: Solr tàu với cầu cảng 6. Bạn chỉ có thể thêm 'org.mortbay.jetty: jsp-2.1: 6.1.14' vào POM của bạn và kết hợp nó với bất kỳ phiên bản 6 cầu cảng nào. Trung tâm Maven không có phiên bản 6.1.26 của jsp-2.1. – Maddin

10

Tôi đã thực hiện nó mà không sử dụng các lọ từ phân phối Jetty, sử dụng phụ thuộc chỉ 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

Xây dựng dựa trên câu trả lời tuyệt vời của Simon Huet, đây là của tôi:

<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

Sau khi đọc trang xếp chồng này (công việc tốt) cũng như http://wiki.eclipse.org/Jetty/Howto/Configure_JSP, cuối cùng tôi cũng đã làm việc này. Vì cấu hình của tôi hơi khác một chút, tôi nghĩ tôi sẽ đóng góp lại.Tôi có một nhúng cài đặt Jetty 8 mà không có sự 'javac' biên dịch, và tôi đã nhận nó để làm việc bằng cách sử dụng trình biên dịch thực và thiết lập thuộc tính hệ thống trước khi tạo máy chủ, như thế này:

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

Và sử dụng maven sau cấu hình:

<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> 
Các vấn đề liên quan