folosind jetty încorporat pentru a crea o interfață web

Sunt un incepator la dezvoltarea web-ului si la folosirea unui port embedded. Codul sursă prezentat mai jos este dezvoltat folosind eclipsa IDE. Trebuie să pornesc programat serverul de jetoane, nu am o opțiune de pornire prin linia de comandă. Trebuie să fie o interfață web extrem de ușoară, deoarece va fi lansată de la un sistem cu viteză redusă de memorie/procesare.

Am dezvoltat următoarea structură de directoare în ECLIPSE

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

Codul sursă al 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 este

 <html>
<head>
    <title>HTML Generator Sample Page</title>
</head>
<body>
    

Agent Management Interface

  1. Start Platform
  2. Show Agent Status
  3. Create Dummy Agent
  4. Intiate Request Message
  5. Stop agent
  6. Stop Platform

Enter option :

<input name="option_selector" type="submit" value="option_selector" />

</body>

fișierul web.xml este cel obișnuit, cu o listă de fișiere de întâmpinare. când rulez serverul și lansez localhost: 8080 în browser-ul web, primesc o eroare de 404 Nu sunt sigur ce trebuie să adaug în fișierul web.xml sau referincingul fișierului web.xml nu este corect în mainul HelloWorld.java metodă.

Orice sfaturi/sugestii vor fi de ajutor EDIT 1:

Sunt inclus fișierul server-api.jar și fișierul jetty.jar în clasă și nu folosesc pluginul Maven pentru eclipsa.

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
5
@abhishek bose pot vedea structura directorului, numai atunci când tip localhost: 8080/src/WEB-INF pot vedea pagina html din pagina index.html
adăugat autor bhavs, sursa
Dacă tastați pe întreaga cale a fișierului, vă mai dă o eroare?
adăugat autor BOSS, sursa

1 răspunsuri

Ați setat fișierul de bun venit la WEB-INF/index.html. Elementele care se află în interiorul directorului WEB-INF sunt vizibile numai pentru containerul servlet și nu sunt accesibile în afara containerului.

Acest lucru nu va funcționa, deoarece index.html este ascuns în spatele WEB-INF. În plus, atunci când lucrăm cu WEB-INF, este obișnuit să-l accesăm din rădăcina aplicației, cum ar fi /WEB-INF/file.html:

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

Dacă includeți doar fișierul index.html ca fișier bun venit și, de asemenea, asigurați-vă că index.html se află în rădăcina aplicației dvs., serverul Jetty ar trebui să îl poată găsi:

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

Asigurați-vă că reporniți Jetty după efectuarea acestei modificări, deoarece aplicația va trebui să reîncărcați aceste informații.

De asemenea, atunci când configurați o nouă aplicație Web pe un server, este, în general, o idee bună să transformați nivelurile de logare până la capăt. Serverul și framework-urile se înregistrează de obicei la niveluri inferioare, astfel încât să nu interfereze cu jurnalele de aplicații; cu toate acestea, în acest caz, trebuie să vedeți care sunt resursele pe care containerul de servlet încearcă să le acceseze atunci când încărcați localhost: 8080 în browserul dvs.

Pentru a clarifica în continuare, ResourceHandler.setWelcomeFiles Metoda Java este identică cu configurarea serverului prin web.xml în Jetty ne-încorporat, folosind următoarea intrare XML:

    
            index.html
    

Există câteva exemple și mai multe documente pe Eclipse Wiki Page on Embedding Jetty , asigurați-vă că verificați-le pentru mai multe îndrumări.

Structura fișierului Jetty 6 încorporată:

Iată o structură de fișier exemplu a unei copii a jetului încorporat pe care o am. Rețineți că index.html este în rădăcină, chiar lângă src:

build.properties*  index.html*  README.textile*  src/   war/
build.xml*         licenses/    server/          test/  WEB-INF/
2
adăugat
mulțumesc pentru sugestia de a schimba nivelurile de înregistrare, chiar și după această schimbare, când scriu localhost: 8080 Acum văd structura directorului bazei mele de cod, când fac clic pe folderul src/WEB-INF pot vedea pagina html pe care am creată. Voi actualiza întrebarea cu mesajele de jurnal de la creșterea nivelurilor de logare
adăugat autor bhavs, sursa
mulțumesc pentru sugestia dvs. acest lucru a ajutat, eu pot vizualiza pagina acum
adăugat autor bhavs, sursa
O.K. muta index.html în același folder ca src - deci sunt frați. Fișierul dvs. index.html este la 2 niveluri mai adânc decât în ​​cazul în care Jetty este în căutarea. De asemenea, faptul că WEB-INF este vizibil sugerează că niciunul din fișierele de configurare nu face nimic, deoarece containerul ascunde în mod normal acelea implicit. Dar asta este bine, deoarece configurați programatic în loc de fișiere xml ...
adăugat autor jmort253, sursa
Cu plăcere. Mult noroc! :)
adăugat autor jmort253, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com