Mòdul 7

Pràctica 3: Configurar Resin. On es desen els fitxers d'una aplicació web?
Tornar presentació tema
      Pràctica 2 Prąctica 2 Prąctica 3 Pràctica 4 Prąctica 5 Prąctica 6 Prąctica 7 Prąctica 8 Prąctica 9 Prąctica 10
 

En aquesta pràctica aprendràs a configurar alguns paràmetres del teu servidor de pàgines web.

Com les aplicacions web de Java són programes, has d'aprendre com s'estructuren les carpetes d'una aplicació orientada a pàgines web i on es deixen el fitxers de fonts o les classes compil·lades. Aprofitarem la pràctica per a iniciar el projecte d'aquest mòdul: un gestor de notícies en línia que treballa en connexió amb una base de dades MySQL.

 
  L'agència de notícies ACME.  
 


Imagina que has tingut la sort d'esdevenir programador professional i t'ha caigut un projecte important: l'Agència de Notícies ACME t'encarrega que els programis una web per a recollir i publicar notícies directament des d'internet.

Es tracta d'un portal amb força interactivitat: les notícies les entraran els propis usuaris d'internet que també tindran la possibilitat de votar les notícies més interessants. Els articles amb més èxit quedaran destacats a la primera pàgina del portal.

Com es preveu que poden visitar la pàgina web milers d'internautes cada dia, ACME t'ha encarregat que utilitzis Java i MySQL per a la seva programació: així asseguraràs que el programa sigui resistent.

Abans de començar a planificar el projectes, modificaràs una mica la configuració del Resin i crearàs l'estructura de carpetes del projecte. De moment el que t' interessa és que l'aplicació 'Notícies ACME' s'executi quan un usuari demani l'adreça http://localhost o el nom que tingui el nostre servidor a Internet o en una intranet. Això vol dir que:

  • Hem de fer que resin s'executi en el port 80 en lloc del port 8080. Els usuaris d'Internet no tenen apreci per adreces del tipus http://www.undomini.com:8080. Són difícils d'escriure en el navegador i més complicades de recordar.
  • Hem de fer que el projecte 'Notícies ACME' sigui el que s'obri per defecte quan arranquem el servidor web.

Podem modificar aquests comportaments editant el fitxer resin.conf, el cor de la configuració del servidor.

 

 
  Revisant la configuració del servidor Resin (resin.conf)  
 


El fitxer resin.conf conté la major part dels paràmetres d'arrencada del servidor d'aplicacions. Pot ser un fitxer molt complicat que costa arribar a comprendre completament.

En general, però, la configuració que ens proposa el fabricant quan fem l'instal·lació és molt funcional i no hem de tocar massa coses. Nosaltres només canviarem un parell d'etiquetes. Posem-nos a la feina:

Atura, en primer lloc, el servidor Resin si el tens en marxa.

Mou-te a la carpeta c:/java/resin-3.0.9/conf. A dins trobaràs el fitxer resin.conf de la teva distribució. Obre'l amb la llibreta, el wordpad o equivalent. Si t'interessa pots intentar interpretar com està estructurada la informació en el resin.conf. No et preocupis si inicialment entens poques coses. És un fitxer que es tarda en dominar.

Localitza la següent etiqueta:

<!-- The http port -->
<http server-id="" host="*" port="8080"/>

Vol dir que el servidor Resin està escoltant les peticions pel port 8080. Assegura't que el teu ordinador no té ocupat el port 80 (només ho estarà si tens un servidor de pàgines web que no sigui el Resin corrent en el teu ordinador).

Amb l'editor de text modifica el contingut de l'etiqueta. T'ha de quedar així:

<!-- The http port -->
<http server-id="" host="*" port="80"/>

Ja has canviat el port 8080 pel port 80.

Ara has de crear una nova carpeta. Serà un directori important, la carpeta arrel del projecte de notícies ACME. La carpeta s'ha de dir:

c:/java/resin-3.0.9/webapps/noticiesacme

Ara convertirem aquesta carpeta en el projecte principal del servidor.

Has de localitzar al final del fitxer resin.conf aquesta etiqueta:

<!-- configures an explicit root web-app -->
<web-app id='/' document-directory="webapps/ROOT"/>

Modifica el seu contingut per aquest:

<!-- configures an explicit root web-app -->
<web-app id='/' document-directory="webapps/noticiesacme"/>

Modifica també la següent etiqueta:

<hot id="" root-directory=".">

per aquesta versió:

</host id="" root-directory="./">

Això és tot. A partir d'ara, quan arrenquis el servidor Resin i demanis http://localhost, t'arrencarà l'aplicació notíciesacme.

Esborra la carpeta c:/java/resin-3.0.9/webapps/ROOT i el seu contingut, ja no et farà falta.

Escriu una petita pàgina provisional d'entrada al projecte. Pot ser aquesta:

 

<html>
<head>
<title>Agència de Notícies ACME</title>
</head>
<body>
<h2>Portal de l'Agència de Notícies ACME. </h2>
</body>
</html>

 
 


S'ha de dir index.jsp i l'has de col·locar dins la carpeta c:/java/resin-3.0.9/webapps/noticiesacme.

Arrenca el servidor Resin. Crida l'adreça genèrica del teu servidor: http://localhost. T'ha de tornar aquesta pàgina:

Ja ets apunt per a començar a treballar en el nou projecte.

 

 
L'estructura d'una aplicació JSP  
 


En el moment que has arrencat el servidor i has cridat http://localhost, el Resin t'ha fet alguna modificació dins la carpeta c:/java/resin-3.0.9/webapps/noticiesacme.

Obre la carpeta amb l'explorador de windows i observa què ha passat:

Dins de / noticiesacme tens una carpeta nova que es diu /WEB-INF. I dins de WEB-INF tens quatre carpetes més: /classes, /lib, /tmp i /work. Totes són carpetes importants, que has de conéixer bé.

/WEB-INF és la carpeta de dipòsit de codi Java de l'aplicació. Totes les classes de la teva creació, o de tercers, o els fitxers de configuració que s'utilitzin a la teva web han d'estar dins de la carpeta /WEB-INF. El servidor d'aplicacions també utilitza aquest directori com a carpeta de treball.

Com la informació que conté el directori /WEB-INF serveix per a programar, el Resin i els altres servidors d'aplicacions no deixen que els clients puguin obrir-la amb els seus navegadors d'internet: és una carpeta segura.

Si escrius classes per a executar a les pàgines JSP, el codi compil·lat d'aquest programes ha d'anar dins de la carpeta /classes. Per exemple, si a la web utilitzes la classe acme.util.DiaenCatala, aquesta classe ha d'estar situada aquí: /WEB-INF/classes/acme/util/DiaenCatala.class.

Si has fet un paquet jar amb utilitats per al programa, o utilitzes qualsevol llibreria enpaquetada en format jar, ha d'anar a la carpeta /lib.

La carpeta /tmp és un directori de fitxers temporals per a ús intern del servidor.

La carpeta /work també la utilitza el servidor. Fa una feina molt important: recull la traducció a fitxers .java i fitxers .class de totes i cadascuna de les pàgines .jsp de la teva aplicació.
Quan et deiem que una pàgina jsp és com un fitxer .java ho deiem en un sentit estricte: el servidor de Java llegeix la pàgina JSP, la tradueix a un tipus de classe especial de java per a la web que es diu servlet i l'enregistra a la carpeta /work per a utilitzar-la. Quan crides una pàgina JSP, de fet, estàs cridant un servlet. El servlet fa la feina encarregada, crea una pàgina web de resposta i l'envia al navegador client.
És important que entenguis aquest principi, et servirà per a comprendre millor tot el sistema de creació d'etiquetes a les JSP.

Tenint en consideració els comentaris anteriors, respon aquestes qüestions:

 
 
 

1) Hem d'afegir al portal una eina de fòrums que el fabricant distribueix en un fitxer amb el nom bestforums_1-0-0.jar. A quina carpeta hem de copiar aquest fitxer per a què les seves classes siguin visibles pel nostre programa?

2) Hem escrit una classe VisitesDAO que servirà per a saber quantes visites té el portal. En quina carpeta dins de /WEB-INF he de posar el fitxer .class corresponent?

3) Un fitxer amb el següent nom: _index__jsp.java. A quin tipus de classe es deu correspondre? En quina carpeta és probable que el trobem?

4) Imagina que has d'instal·lar el programa en un servidor que té els ports 80 i 8080 ocupats per altres aplicacions. L'administrador del servidor et reserva el port 8081 per a què surti el teu portal. Com hauries de modificar el fitxer resin.conf per a què funcionés bé?

5) Imagina que escrius classes per al teu portal amb el BlueJ. En quina carpeta a l'interior de /WEB-INF/ has de situar el projecte de BlueJ per a què al compil·lar aquestes classes amb el teu IDE quedin automàticament al lloc adequat?

 
     
 

 

Tornar al principi