Bonjour,

je développe actuellement une application en java/J2EE sous eclipse ganymede avec le plugin WTP et le serveur d'application Tomcat 5.5

Je souhaite afficher dans une page JSP un tableau avec une liste de PDF que je récupère depuis un répertoire et que j'ouvre grâce à un lien hypertexte

Dans un premier temps j'utilise une classe DAO pour aller lire dans le répertoire et alimenter une collection d'objets qui porteront le nom du fichier, la version,...etc

Voici la classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class ConsignesDAO
{
 
	List consignesList = null;
 
    public void loadConsignes(Person person) throws monAppliException
 
    {
 
    	File dir = new File("/tmp/pdf/consignes");
    	consignesList = new ArrayList();
    	try {
			consignesDirectory(dir);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		person.setConsignesList(consignesList);
 
    }
 
 
    private void consignesDirectory(File dir)
    throws IOException {
 
	    File[] files = dir.listFiles();
 
	    Consigne c=null;
 
		for (int i = 0; i < files.length; i++) {
	      File f = files[i];
	      if (f.isDirectory()) {
	    	  consignesDirectory(f);  // recursivité
	      } else if ((f.getName().endsWith(".pdf"))) {
 
 
			try {
				c = buildConsigne(f.getName());
			} catch (monAppliException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	  consignesList.add(c);
 
	      }
	    }
 
    }
 
	private Consigne buildConsigne(String name)
    throws monAppliException	{
		try
		{
 
		    return new Consigne(name, name, name);
		}
		catch (Exception e)
		{
		    e.printStackTrace();
		    throw new monAppliException("erreur dans le parcours du PDF");
		}
 
	}
 
}

Dans un deuxième temps j'affiche les PDF dans ma JSP avec un lien hypertext vers le fichier physique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
....
<jsp:useBean id="person" scope="session" type="com.monappli.model.Person" />
....
 
<table id="myTable" cellpadding="0" cellpadding="0">
					  	<thead>
 
							<th axis="string"><fmt:message key="REFERENCE_LB" /></th>
 
						</thead>
 
 
						<tbody>
						    <% 
							List consignesList = person.getConsignes();
							Iterator consignesIte = consignesList.iterator();
							int i=0;
							while (consignesIte.hasNext()) {
								Consigne consigne = (Consigne) consignesIte.next();
								i++;
							%>
						    <tr id="<%= consigne.getReference()%>" >
						    	<td><a href="resources/pdf/consignes/<%= consigne.getReference()%>"><%= consigne.getReference()%></a></td>
						    </tr>
						    <%
							}
							%>
					  </tbody>
 
				  </table>


Voici donc mon problème : Actuellement j'ai 2 répertoires pour gérer les mêmes PDF
Dans la classe DAO je lis les PDF dans /tmp/pdf/consignes (en partant de la racine du disque dur)
Et dans ma page JSP je lis les PDF dans resources/pdf/consignes/ qui correspond à un répertoire du contexte de mon application.

Pourquoi 2 répertoires ? Et bien je n'arrive pas à accèder au répertoire resources/pdf/consignes/ depuis ma classe DAO et inversement depuis ma page JSP je n'arrive pas à lire dans /tmp/pdf/consignes.
Comme ma classe DAO n'hérite pas de httpServlet je ne peux pas utiliser la méthode getServletContext() pour accéder au classpath de mon application

L'idéal serait d'avoir un répertoire unique dans ma webapp

Comment résoudre mon problème ?
Quelles sont donc les meilleures méthodes pour accéder à des ressources externes dans un environnement J2EE tout en conservant une application suffisamment portable ?

Merci