2012-05-25 16 views
5

Soy un novato en el desarrollo web y en el uso de embarcadero integrado. El código fuente presentado a continuación se desarrolla usando eclipse IDE. Tengo que iniciar el programa de servidor de embarcaderomtically, no tengo la opción de iniciarlo a través de la línea de comandos. Tiene que ser una interfaz web extremadamente ligera ya que se lanzará desde un sistema con poca memoria/velocidad de procesamiento.usando embarcadero incrustado para crear una interfaz web

he desarrollado la siguiente estructura de directorios en ECLIPSE

JettyExample <Project> 
    src 
    sample_package 
     HelloWorld.java 
    WEB-INF 
     index.html 
     web.xml 

El código fuente de HelloWorld.java

public static void main(String[] args) throws Exception 
{ 

    Server server = new Server(8080); 
    ResourceHandler resource_handler = new ResourceHandler(); 
    resource_handler.setDirectoriesListed(true); 
    resource_handler.setResourceBase(args.length == 2?args[1]:"."); 
    resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 


    System.out.println("serving " + resource_handler.getBaseResource()); 

    HandlerList handlers = new HandlerList(); 
    handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() }); 
    server.setHandler(handlers); 
    server.start(); 
    server.join(); 

} 

index.html es

<html> 
<head> 
    <title>HTML Generator Sample Page</title> 
</head> 
<body> 
    <h1 style="text-align: center;"> 
     Agent Management Interface</h1> 
    <ol> 
     <li> 
      Start Platform</li> 
     <li> 
      Show Agent Status</li> 
     <li> 
      Create Dummy Agent</li> 
     <li> 
      Intiate Request Message</li> 
     <li> 
      Stop agent</li> 
     <li> 
      Stop Platform</li> 
    </ol> 
    <p> 
     Enter option :</p> 
    <p> 
     <textarea cols="10" name="myTextBox" rows="1" style="width: 104px; height: 25px;"></textarea></p> 
    <p> 
     <input name="option_selector" type="submit" value="option_selector" /></p> 
</body> 

el archivo web.xml es el habitual con una lista de archivos de bienvenida. cuando ejecuto el servidor y ejecuto localhost: 8080 en el navegador web, obtengo un error 404 No estoy seguro de qué es lo que necesito agregar al archivo web.xml o la referencia del archivo web.xml no es correcto en el método principal HelloWorld.java.

Alguna pista/sugerencias serán útiles EDIT 1:

estoy incluyendo el archivo server-api.jar y el archivo jetty.jar en la ruta de clase y no hacer uso del plugin de Maven para Eclipse.

Edit2:

2012-05-25 14:40:39.253:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.260:DBUG:oejs.Server:REQUEST/on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.264:DBUG:oejs.Server:RESPONSE/200 
2012-05-25 14:40:39.267:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.272:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.273:DBUG:oejs.Server:REQUEST /jetty-dir.css on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.275:DBUG:oejs.Server:RESPONSE /jetty-dir.css 404 
+0

Si escribe toda la ruta del archivo, ¿todavía le está dando un error? – BOSS

+0

@abhishek bose Puedo ver la estructura del directorio, solo cuando escribo localhost: 8080/src/WEB-INF puedo ver la página html desde la página index.html – bhavs

Respuesta

2

que haya definido su archivo de bienvenida a WEB-INF/index.html. Los elementos que se encuentran dentro de la carpeta WEB-INF solo son visibles para el contenedor de servlets y no son accesibles fuera del contenedor.

Esto no funcionará, ya que index.html está oculto detrás de WEB-INF. Además, cuando se trabaja con WEB-INF, se acostumbra a acceder a él desde la raíz de la aplicación, como /WEB-INF/file.html:

resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 

Si incluye sólo el archivo index.html como archivo de bienvenida, y también asegurarse de index.html está en la raíz de su aplicación, el embarcadero servidor debe ser capaz de encontrarlo:

resource_handler.setWelcomeFiles(new String[]{ "index.html" }); 

Asegúrese de reiniciar el embarcadero después de hacer este cambio, ya que la aplicación necesitará para volver a cargar esta información

Además, al configurar una nueva aplicación web en un servidor, generalmente es una buena idea aumentar completamente sus niveles de registro. El servidor y los marcos generalmente se registran en niveles más bajos para que no interfieran con los registros de la aplicación; sin embargo, en este caso, necesita ver a qué recursos está intentando acceder el contenedor de servlets cuando carga localhost: 8080 en su navegador.

Para aclarar aún más, el método de Java ResourceHandler.setWelcomeFiles es el mismo que para configurar el servidor a través de la web.xml en el embarcadero no embebida, usando la siguiente entrada XML:

<welcome-file-list> 
      <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

Hay algunos ejemplos y más documentación en el Eclipse Wiki Page on Embedding Jetty, asegúrese de comprobar a cabo para obtener más orientación.

estructura de archivos del embarcadero incrustado 6:

continuación se muestra un ejemplo de estructura de archivo de una copia del embarcadero incrustado que tengo. Tenga en cuenta que index.html está en la raíz, justo al lado de src:

build.properties* index.html* README.textile* src/ war/ 
build.xml*   licenses/ server/   test/ WEB-INF/ 
+0

gracias por la sugerencia de cambiar los niveles de registro, incluso después de esto cambio, cuando escribo localhost: 8080 ahora veo la estructura del directorio de mi base de código, cuando hago clic en la carpeta src/WEB-INF puedo ver la página html que he creado. Actualizaré la pregunta con los mensajes de registro de aumentar los niveles de registro – bhavs

+1

bien. mueva index.html a la misma carpeta que src, para que sean hermanos. Su archivo index.html es 2 niveles más profundo que donde Jetty está buscando. Además, el hecho de que WEB-INF esté visible sugiere que ninguno de los archivos de configuración está haciendo nada, ya que el contenedor normalmente los oculta de manera predeterminada. Pero está bien, ya que está configurando programáticamente en lugar de archivos XML ... – jmort253

+0

gracias por su sugerencia, esto ayudó, puedo ver la página ahora – bhavs

Cuestiones relacionadas