2012-09-16 12 views
6

Śledzę z instrukcjami, aby utworzyć "webapp standardowy z Jetty i Maven" precyzyjnie jak opisano na wiki Eclipse: http://wiki.eclipse.org/Jetty/Tutorial/Jetty_and_Maven_HelloWorld#Developing_a_Standard_WebApp_with_Jetty_and_Maven404 Not Found Błąd w prosty Jetty/Maven Hello World webapp

Jednak kiedy uruchom webapp (mvn jetty: run) i idź do localhost: 8080/hello-world/hello, kończę na "HTTP ERROR 404 Problem accessing/hello-world/hello. Powód: nie znaleziony". Czytałem dokumentację, przeglądałem historię strony wiki, przeglądałem inne fora i wątki stackoverflow, ale nie mogę znaleźć odpowiedzi na ten pozornie prosty problem. Opublikuję moje źródło, ale jest dosłownie takie samo jak samouczek.

Każda pomoc zostanie doceniona. Naprawdę chciałbym zacząć grać z tą technologią, ale jej przygnębiające, że wciąż uderzam w ten sam ślepy zaułek.

(Uwaga:.. Pierwsza część samouczka, aby utworzyć „JettyMavenHelloWorld” działać poprawnie Mój problem jest z drugą częścią „JettyMavenHelloWarApp” Ten rozdział jest zatytułowany „Opracowanie webapp standardowy z Jetty i Maven”)

JettyMavenHelloWarApp/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.example</groupId> 
    <artifactId>hello-world</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>Jetty HelloWorld</name> 

    <properties> 
    <jettyVersion>7.2.0.v20101020</jettyVersion> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-server</artifactId> 
     <version>${jettyVersion}</version> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <!-- This plugin is needed for the servlet example --> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>${jettyVersion}</version> 
     </plugin> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.1</version> 
     <executions> 
      <execution><goals><goal>java</goal></goals></execution> 
     </executions> 
     <configuration> 
      <mainClass>org.example.HelloWorld</mainClass> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

JettyMavenHelloWarApp/src/main/Java/org/przykład/HelloServlet.java

package org.example; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class HelloServlet extends HttpServlet 
{ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     response.setContentType("text/html"); 
     response.setStatus(HttpServletResponse.SC_OK); 
     response.getWriter().println("<h1>Hello Servlet</h1>"); 
     response.getWriter().println("session=" + request.getSession(true).getId()); 
    } 
} 

Jet tyMavenHelloWarApp/src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 
    <servlet> 
    <servlet-name>Hello</servlet-name> 
    <servlet-class>org.example.HelloServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Hello</servlet-name> 
    <url-pattern>/hello/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

JettyMavenHelloWarApp/src/main/webapp/index.html

<h1>Hello World Webapp</h1> 
<a href="/hello">Hello Servlet</a> 

Odpowiedz

11

Samouczek daje błędny URL - context app jest nadal "/", , więc adresy URL to odpowiednio http://localhost:8080 i http://localhost:8080/hello dla zawartości statycznej i dynamicznej.

Dokumentacja wtyczki maven pomostuje, że domyślny kontekst będzie nazwany tak samo jak artefaktId w pom.xml, ale to nie działa tutaj.

+4

Niestety, jeśli aplikacja nie zostanie znaleziona nawet pod adresem "http: // localhost: 8080"? – tonix

0

myślę dodanie do definicji konfiguracji wtyczki molo w swojej pom powinien zmienić contextpath Hello-World:

 <plugin> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>${jettyVersion}</version> 
      <configuration> 
       <webApp> 
        <contextPath>/hello-world</contextPath> 
       </webApp> 
      </configuration> 
     </plugin> 

ta opiera się na molo w wersji 9. Zobacz http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin dla opcji konfiguracyjnych.

2

wpadłem na ten sam problem i co pracował dla mnie było dostępu do aplikacji takich jak: http://localhost:8080/hello/index.jsp lub http://localhost:8080/hello/index.html, cokolwiek używasz HTML lub js stron.

0

Miałem ten sam problem z podstawową konfiguracją.

Chciałem przekierować z wiosennym 3 MVC stronę błędu przy tej konfiguracji (w web.xml)

<error-page> 
     <error-code>404</error-code> 
     <location>/WEB-INF/views/error.html</location> 
</error-page> 

go rozwiązać poprzez zmianę rozszerzenia error.html do error.jsp.

0

Myślę, że nie uruchamiasz zadania mvn package przed mvn jetty:run dlatego to molo nie widzi żadnych źródeł. Po prostu uruchom najpierw mvn package.