2012-09-16 12 views
6

he seguido las instrucciones para crear una "aplicación web estándar con embarcadero y Maven" precisamente como se describe en el eclipse wiki: http://wiki.eclipse.org/Jetty/Tutorial/Jetty_and_Maven_HelloWorld#Developing_a_Standard_WebApp_with_Jetty_and_Mavende error 404 no se encuentran en un simple embarcadero/webapp Maven Hello World

Sin embargo, cuando ejecuta la aplicación web (mvn embarcadero: ejecutar) y ve a localhost: 8080/hello-world/hello. Termino en un "HTTP ERROR 404 Problema al acceder/hello-world/hello. Razón: no encontrada". He leído la documentación, he mirado la historia de la página wiki, curioseado en otros foros y en los hilos de stackoverflow, pero no encuentro la respuesta a este problema aparentemente simple. Voy a publicar mi fuente, pero es literalmente el mismo que el tutorial.

Cualquier ayuda sería apreciada. Realmente me gustaría empezar a jugar con esta tecnología, pero es desalentador seguir golpeando en el mismo callejón sin salida.

(Tenga en cuenta:.. La primera parte del tutorial para crear "JettyMavenHelloWorld" funcionan bien Mi problema es con la segunda parte, "JettyMavenHelloWarApp" En esta sección se titula "Desarrollo de una aplicación web estándar con embarcadero y 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/ejemplo/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> 

Respuesta

11

El tutorial da la dirección URL incorrecta - el contexto de aplicaciones sigue siendo "/", , por lo que las URL son http://localhost:8080 y http://localhost:8080/hello para el contenido estático y dinámico, respectivamente.

La documentación del complemento maven jetty afirma que el contexto predeterminado se llamará igual que el artifactId en el pom.xml, pero parece que no funciona aquí.

+4

Disculpe, ¿y si la aplicación no se encuentra incluso en 'http: // localhost: 8080'? – tonix

0

creo que la adición de configuración a la definición del plugin muelle en su pom debe cambiar el contextPath a hola-mundo:

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

Esto se basa en la versión muelle 9. Ver http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin de las opciones de configuración.

2

Me encontré con el mismo problema y lo que funcionó para mí fue acceder a la aplicación como: http://localhost:8080/hello/index.jsp o http://localhost:8080/hello/index.html, lo que sea que esté usando páginas html o js.

0

Tuve el mismo problema con una configuración básica.

I querían para redirigir con Spring 3 MVC una página de error con esta configuración (en web.xml)

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

resuelvo cambiando la extensión de error.html a error.jsp.

0

Creo que no se ejecuta la tarea mvn package antes de mvn jetty:run es por eso que embarcadero no ve ninguna fuente. Simplemente ejecute mvn package primero.