Arborescence fichiers projet j2ee (servlets)

Arborescence fichiers projet j2ee (servlets) - Java - Programmation

Marsh Posté le 24-05-2010 à 12:02:24    

Salut,
 
J’aurais une question concernant la construction de l’arborescence de fichiers dans un projet j2ee, pour l’instant j’essaie de me familiariser avec eclipse ou netbeans que je trouve beaucoup plus pratique. L’exemple qui suit est avec netbeans et serveur TomCat.
 
A la création du projet les deux IDE construisent une arborescence par défaut. Avec un répertoire par défaut pour les sources (src/java).  
De mon coté je souhaiterais créer un répertoire « /WEB-INF/classes » et mettre toutes mes classes (*.java) à l’intérieur organisées en sous répertoires, comme on le conseille dans beaucoup de tutoriaux. Mais pour faire ça sous netbeans il faut que le « Source package Folder » pointe vers « web/WEB-INF/classes » (paramétrage que j’ai effectué).
 
Le problème c’est que lorsque je cré une servlet dans ce nouveau répertoire, le chemin n’est pas reconnu à l’exécution. Il me met l’erreur suivante :

Code :
  1. Etat HTTP 404 - Servlet NewServlet2 n'est pas disponible.
  2. type Rapport d'état
  3. message Servlet NewServlet2 n'est pas disponible.
  4. description La ressource demandée (Servlet NewServlet2 n'est pas disponible.) n'est pas disponible.


 
Fichier web.xml :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee....
  3.    
  4.     <servlet>
  5.         <servlet-name>NewServlet2</servlet-name>
  6.         <servlet-class>NewServlet2</servlet-class>
  7.     </servlet>
  8.     <servlet-mapping>
  9.         <servlet-name>NewServlet2</servlet-name>
  10.         <url-pattern>/NewServlet2</url-pattern>
  11.     </servlet-mapping>
  12.     <session-config>
  13.         <session-timeout>
  14.             30
  15.         </session-timeout>
  16.     </session-config>
  17.     <welcome-file-list>
  18.         <welcome-file>index.jsp</welcome-file>
  19.     </welcome-file-list>
  20. </web-app>


 
La servlet ne passe que lorsqu’elle est créée dans le « Source package Folder » d’origine soit src/java. Donc je ne peux pas mettre mes servlets dans « web/WEB-INF/classes », POURQUOI ? j’ai vu dans plusieurs bouquins ou tutoriaux que beaucoup de développeurs le faisaient, donc ça devrait être possible non ?
 
Je sais que tout le contenu du répertoire "WEB-INF" n'est pas accessible par le web, mais vu que pour appeler la servlet j'utilise la string "url-pattern" et non pas le nom du fichier lui même je me disais que ça n'avais pas grande importance.
 
Merci de vos réponses

Message cité 1 fois
Message édité par jamesbond2 le 24-05-2010 à 12:43:48
Reply

Marsh Posté le 24-05-2010 à 12:02:24   

Reply

Marsh Posté le 25-05-2010 à 13:08:10    

Les exemples que tu as vus devaient être assez anciens. Je sais que Tomcat autorisait ce mécanisme jusqu'à la version 4 ou 5.
 
Maintenant (tomcat 6), et conformément aux spécifications des servlets, ces dernières doivent appartenir à un package.

Reply

Marsh Posté le 25-05-2010 à 15:37:17    

jamesbond2 a écrit :

Salut,
De mon coté je souhaiterais créer un répertoire « /WEB-INF/classes » et mettre toutes mes classes (*.java) à l’intérieur organisées en sous répertoires, comme on le conseille dans beaucoup de tutoriaux. Mais pour faire ça sous netbeans il faut que le « Source package Folder » pointe vers « web/WEB-INF/classes » (paramétrage que j’ai effectué).


C'est plutôt comme ça qu'on fait habituellement :
 - Les sources sont placées dans un répertoire déclaré "Source package Folder" (ex : src/java)
 - Le répertoire "/WEB-INF/classes" est déclaré en tant que "default output folder" (sous Eclipse, mais netbeans doit fonctionner pareil)
 
Ainsi, à chaque compilation de tes sources depuis "src/java", les classes se retrouveront dans le répertoire "/WEB-INF/classes".


Message édité par charly007 le 25-05-2010 à 15:37:48
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed