2012-09-16 14 views
6

Ho seguito le istruzioni per creare un "Standard WebApp con Jetty e Maven" proprio come descritto sul wiki eclisse: http://wiki.eclipse.org/Jetty/Tutorial/Jetty_and_Maven_HelloWorld#Developing_a_Standard_WebApp_with_Jetty_and_MavenErrore 404 Not Found in un semplice Molo/Maven Ciao Mondo webapp

Tuttavia quando ho esegui la webapp (mvn jetty: run) e vai a localhost: 8080/hello-world/ciao mi trovo in un "HTTP ERROR 404 Problema di accesso/ciao-mondo/ciao Motivo: non trovato". Ho letto la documentazione, ho esaminato la storia della pagina del wiki, cercato su altri forum e thread di stackoverflow, ma non sono riuscito a trovare la risposta a questo problema apparentemente semplice. Pubblicherò la mia fonte, ma è letteralmente la stessa del tutorial.

Qualsiasi aiuto sarebbe apprezzato. Mi piacerebbe davvero iniziare a giocare con questa tecnologia ma è scoraggiante continuare a sbattere nello stesso vicolo cieco.

(Si prega di notare:.. La prima parte del tutorial per creare "JettyMavenHelloWorld" fine lavoro Il mio problema è con la seconda parte, "JettyMavenHelloWarApp" Questa sezione è intitolata "Lo sviluppo di una WebApp standard con Jetty e 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/example/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> 

risposta

11

Il tutorial dà l'URL non corretto - il contesto di applicazione è ancora "/", quindi gli URL sono http://localhost:8080 e http://localhost:8080/hello rispettivamente per il contenuto statico e dinamico.

La documentazione del plug-in maven jetty afferma che il contesto predefinito verrà denominato come artefatto nel pom.xml, ma sembra che non funzioni qui.

+4

Spiacenti, cosa succede se l'app non viene trovata anche su "http: // localhost: 8080"? – tonix

0

Penso aggiungendo configurazione per la definizione plug pontile nel pom dovrebbe cambiare il contextpath per ciao-mondo:

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

Questo si basa sul molo versione 9. Vedi http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin per le opzioni di configurazione.

2

Mi sono imbattuto nello stesso problema e ciò che ha funzionato per me è stato l'accesso all'app come: http://localhost:8080/hello/index.jsp o http://localhost:8080/hello/index.html, qualsiasi cosa tu stia utilizzando pagine html o js.

0

Ho avuto lo stesso problema con una configurazione di base.

ho voluto reindirizzare con Spring 3 MVC una pagina di errore con questa configurazione (in web.xml)

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

ho risolto cambiando estensione di error.html a error.jsp.

0

Penso che non si esegua l'attività mvn package prima di mvn jetty:run è per questo che il molo non vede alcuna fonte. È sufficiente eseguire prima mvn package.