Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1340 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  alias sous Tomcat (résolu)

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

alias sous Tomcat (résolu)

n°490820
ozark74
Posté le 19-08-2003 à 00:32:40  profilanswer
 

hello,
 
j'ai une web application pour laquelle j'aimerais accéder à des ressources (images) en dehors du context Tomcat (sur d:\data\pictures par exemple)
 
je pense que dans Apache il y a moyen de configurer cela avec des alias, est-ce possible aussi avec Tomcat ?
ou bien suis-je obligé de copier toutes les images dans le context de la web application ?


Message édité par ozark74 le 22-08-2003 à 10:36:01
mood
Publicité
Posté le 19-08-2003 à 00:32:40  profilanswer
 

n°490880
benou
Posté le 19-08-2003 à 08:41:03  profilanswer
 

tu peux faire une servlet qui va lire les fichiers dans un rep spéciale en ouvrant le fichier et en balançant le flux sur la sortie de la servlet ...


---------------
ma vie, mon oeuvre - HomePlayer
n°493003
ozark74
Posté le 21-08-2003 à 09:16:30  profilanswer
 

:bounce:

n°493010
benou
Posté le 21-08-2003 à 09:21:21  profilanswer
 


ca fait plaisir d'être ignoré  :pfff:


---------------
ma vie, mon oeuvre - HomePlayer
n°493040
ozark74
Posté le 21-08-2003 à 09:41:41  profilanswer
 

benou a écrit :


ca fait plaisir d'être ignoré  :pfff:  


 
Benou
 
ta solution ne me satisfait pas vraiment because ce que je voudrais faire c'est inclure dans mes jsps des images qui ne se trouvent pas dans le context tomcat mais à un autre endroit sur le disque dur.
 
Je sais que c'est possible sous Apache, mais avec Tomcat seul est-ce que c'est le cas ?  
 

n°493043
darklord
You're welcome
Posté le 21-08-2003 à 09:50:03  profilanswer
 

ozark74 a écrit :


 
Benou
 
ta solution ne me satisfait pas vraiment because ce que je voudrais faire c'est inclure dans mes jsps des images qui ne se trouvent pas dans le context tomcat mais à un autre endroit sur le disque dur.


 
la moindre des choses c'est d'avoir la politesse de répondre à la personne qui essaye de t'aider


---------------
Just because you feel good does not make you right
n°493046
ozark74
Posté le 21-08-2003 à 09:58:11  profilanswer
 

oki oki je vous présente mes plus plates excuses  :sweat:  
j'le ferai plus  

n°493088
benou
Posté le 21-08-2003 à 10:48:42  profilanswer
 

ozark74 a écrit :


ce que je voudrais faire c'est inclure dans mes jsps des images qui ne se trouvent pas dans le context tomcat mais à un autre endroit sur le disque dur.


c'est exactement ce que ma solution permet de faire ...


---------------
ma vie, mon oeuvre - HomePlayer
n°493116
benou
Posté le 21-08-2003 à 11:06:50  profilanswer
 

je suis même tellement sympa et pas rancunié que je te file le code tout fait :  

Code :
  1. package benou.t.es.trop.sympa;
  2. import java.io.IOException;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. import java.io.*;
  6. public class ImageMappingServlet extends HttpServlet
  7. {
  8. private File dataDirectory;
  9. public void init()throws ServletException{
  10.  String dataDirectory_str = getInitParameter("imgDirectory" );
  11.  if (dataDirectory_str == null) {
  12.   throw new ServletException("The servlet parameter 'imgDirectory' is mandatory" );
  13.  }
  14.  this.dataDirectory = new File(dataDirectory_str);
  15.  if (!this.dataDirectory.isDirectory()) {
  16.   throw new ServletException("'" + dataDirectory_str + "' doesn't exist or isn't a directory" );
  17.  }
  18. }
  19. protected void doGet(
  20.  HttpServletRequest request,
  21.  HttpServletResponse response)
  22.  throws ServletException, IOException
  23. {
  24.  HttpSession session = request.getSession();
  25.  String src = request.getPathInfo();
  26.  ServletContext context = getServletConfig ().getServletContext ();
  27.  String MIMEType = context.getMimeType (src);
  28.  if (MIMEType != null) {
  29.   response.setContentType(MIMEType);
  30.  }
  31.  File srcFile = new File(this.dataDirectory, src);
  32.  if (! srcFile.isFile()) {
  33.   response.sendError(404);
  34.   return;
  35.  }
  36.  FileInputStream in = new FileInputStream(srcFile);
  37.  OutputStream out = response.getOutputStream();
  38.  int size = copy(in, out, 1024);
  39.  in.close();
  40.  response.setContentLength(size);
  41. }
  42. public static int copy(InputStream in, OutputStream out, int bufferSize) throws IOException {
  43.  byte[] buffer = new byte[bufferSize];
  44.  int nbRead;
  45.  int size=0;
  46.  while ((nbRead = in.read(buffer)) != -1) {
  47.   out.write(buffer, 0, nbRead);
  48.   size+=nbRead;
  49.  }
  50.  return size;
  51. }
  52. }


 
et dans le web.xml :
 

Citation :


    <servlet>
        <servlet-name>ImageServlet</servlet-name>
        <servlet-class>benou.t.es.trop.sympa.ImageMappingServlet </servlet-class>
       <init-param>
         <param-name>imgDirectory</param-name>
         <param-value>c:\tonRepImage</param-value>
       </init-param>
 
    </servlet>
    <servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/img2/*</url-pattern>
 
   </servlet-mapping>


 
et tes liens vers tes images devront ressembler à ca : http://tonServeur/tonApp/img2/toto.jpg
et ca te renverra l'image présente dans c:\tonRepImage\toto.jpg


Message édité par benou le 22-08-2003 à 00:21:29

---------------
ma vie, mon oeuvre - HomePlayer
n°493140
ozark74
Posté le 21-08-2003 à 11:22:23  profilanswer
 

benou a écrit :

je suis même tellement sympa et pas rancunié que je te file le code tout


 
thanks Benou, t'es vraiment trop bon avec moi  :jap:  
 
j'essaie ca ce soir et je vous tiens au courant.
 

mood
Publicité
Posté le 21-08-2003 à 11:22:23  profilanswer
 

n°493141
darklord
You're welcome
Posté le 21-08-2003 à 11:23:53  profilanswer
 

ozark74 a écrit :


 
thanks Benou, t'es vraiment trop bon avec moi  :jap:  


 
je trouve aussi [:ddr555]
 
:hello:


---------------
Just because you feel good does not make you right
n°493149
benou
Posté le 21-08-2003 à 11:37:03  profilanswer
 

je suis dans un bon jour ;)
 
et puis ca pourra peut-être servir à d'autre : c'est un besoin assez courant ...


---------------
ma vie, mon oeuvre - HomePlayer
n°493190
El_gringo
Posté le 21-08-2003 à 12:35:05  profilanswer
 

Je me permet juste un pitite remarque sur le code de benou :
à la place de ça :

Code :
  1. if (Utils.endsWithIgnoreCase(src, ".gif" )) {
  2.            response.setContentType("image/gif" );
  3.           } else if (Utils.endsWithIgnoreCase(src, ".jpg" ) || Utils.endsWithIgnoreCase(src, ".jpeg" )){
  4.            response.setContentType("image/jpeg" );
  5.         }


 
On devrait plutpot faire ça :

Code :
  1. ServletContext context = getServletConfig ().getServletContext ();
  2. String MIMEType = context.getMimeType (src);
  3. if (MIMEType != null)
  4.    response.setContentType(MIMEType);


C'est plus générique. Et puis, pourquoi ne pas utiliser ce qui existe dans les moteurs de servlets niveau correspondance de types MIME

n°493265
the real m​oins moins
Posté le 21-08-2003 à 13:52:47  profilanswer
 

ça me parait étrange qu'on ne puisse pas faire ça dans la config de tomcat directement... et puis tu peux toujours mettre un apache devant sinon ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°493280
benou
Posté le 21-08-2003 à 14:00:37  profilanswer
 

El_gringo a écrit :

Je me permet juste un pitite remarque sur le code de benou :
On devrait plutpot faire ça :
C'est plus générique. Et puis, pourquoi ne pas utiliser ce qui existe dans les moteurs de servlets niveau correspondance de types MIME


Tout à fait ! c'est bien mieux comme ca !
je ne me souvenais plus de l'existence de cette méthode ...


---------------
ma vie, mon oeuvre - HomePlayer
n°493308
the real m​oins moins
Posté le 21-08-2003 à 14:11:56  profilanswer
 

benou a écrit :


Tout à fait ! c'est bien mieux comme ca !
je ne me souvenais plus de l'existence de cette méthode ...

un bon point pour el_gringo :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°493323
benou
Posté le 21-08-2003 à 14:16:53  profilanswer
 

the real moins moins a écrit :

un bon point pour el_gringo :)


 :jap:


---------------
ma vie, mon oeuvre - HomePlayer
n°493357
El_gringo
Posté le 21-08-2003 à 14:26:14  profilanswer
 


 
Youpi :bounce:  
Encore 9 et j'ai une grande image !

n°493392
the real m​oins moins
Posté le 21-08-2003 à 14:34:43  profilanswer
 

:lol:  
 
 
(qqun tient les comptes? [:cupra])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°493475
the real m​oins moins
Posté le 21-08-2003 à 15:03:26  profilanswer
 

the real moins moins a écrit :

:lol:  
 
 
(qqun tient les comptes? [:cupra])

je tiens un spreadsheet à jour :D
gare à vous :D


Message édité par the real moins moins le 21-08-2003 à 15:03:35

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°493897
ozark74
Posté le 21-08-2003 à 23:45:44  profilanswer
 

Citation :

je suis même tellement sympa et pas rancunié que je te file le code tout fait :


 
voila j'ai testé ca fonctionne très bien, encore un grand merci  :jap:  
 
quelques petits détails (dans le but de faire avancer la science) :  
1.

Code :
  1. String dataDirectory_str = getServletContext().getInitParameter("imgDirectory" );


fonctionnait pas alors que  

Code :
  1. String dataDirectory_str = getServletConfig().getInitParameter("imgDirectory" );


fonctionnait bien, pourtant il me semble que ca devrait donner le meme résultat dans les deux cas  :heink:  
 
2. init-param dans la section servlet et pas la section servlet-mapping du web.xml
 
3. url-pattern : pas de / devant img2/*
 
Remarque finale : j'ignorais que l'ordre des éléments dans le web.xml était important !  
 
Voila c'est tout pour ce soir, Simone à vous l'antenne.


Message édité par ozark74 le 21-08-2003 à 23:47:05
n°493907
the real m​oins moins
Posté le 21-08-2003 à 23:52:26  profilanswer
 

toi tu cherches à grapiller un bon point hein? [:paysan]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°493924
benou
Posté le 22-08-2003 à 00:19:30  profilanswer
 

ozark74 a écrit :

[quote]1.

Code :
  1. String dataDirectory_str = getServletContext().getInitParameter("imgDirectory" );


fonctionnait pas alors que  

Code :
  1. String dataDirectory_str = getServletConfig().getInitParameter("imgDirectory" );


fonctionnait bien, pourtant il me semble que ca devrait donner le meme résultat dans les deux cas  :heink:  


:jap: le code que j'ai fillé je l'ai piqué sur une servlet ressemblante et je l'ai adapté vite fait sans recompilé ni tester ... la servlet d'origine cherchait le paramêtre dans le contexte, j'ai loupé cette modif
 

ozark74 a écrit :

[quote]2. init-param dans la section servlet et pas la section servlet-mapping du web.xml


:jap:
j'ai mal placé mon copié collé :lol:
 

ozark74 a écrit :

[quote]3. url-pattern : pas de / devant img2/*


là par contre je ne suis pas d'accord : tous les url-pattern doivent commencer par un '/' sauf ceux de la forme "*.truc".  
 
je mets à jour mon post initial avec ces modifs


---------------
ma vie, mon oeuvre - HomePlayer
n°493928
benou
Posté le 22-08-2003 à 00:26:12  profilanswer
 

je savais bien que je me trompais pas :  
 
tiré des spécif des servlet 2.3 du site de sun :  

Citation :

In the web application deployment descriptor, the following syntax is used to define
mappings:
? A string beginning with a ?/? character and ending with a ?/*? postfix is used
for path mapping.
? A string beginning with a ?*.? prefix is used as an extension mapping.
? A string containing only the ?/? character indicates the "default" servlet of the
application. In this case the servlet path is the request URI minus the context
path and the path info is null.
? All other strings are used for exact matches only.


---------------
ma vie, mon oeuvre - HomePlayer
n°493949
ozark74
Posté le 22-08-2003 à 00:43:47  profilanswer
 

benou a écrit :

je savais bien que je me trompais pas :  


 
en effet ... je viens de retester et ca fonctionne avec (ou sans) le / devant img2/*

n°493956
ozark74
Posté le 22-08-2003 à 00:51:14  profilanswer
 

puisque Simone ne veut pas reprendre l'antenne tout de suite, voici un flash de dernière minute.
 
autre technique faire de d:\data\pictures le root d'un autre contexte  
 
suffit d'ajouter un fichier xml dans le root du répertoire webapps de Tomcat avec le contenu suivant :  

Code :
  1. <Context path="/mypics" docBase="d:/data/pictures "
  2.         debug="0">
  3. </Context>


 
et ensuite j'accède aux images tout naturellement via http://monserveur/mypics/toto.jpg
 
 
je sais pas ce que ca vaut comme approche, mais ca à l'avantage de pas devoir coder quoique ce soit.

n°493961
benou
Posté le 22-08-2003 à 00:58:05  profilanswer
 

bha c'est pas top : tu redéfinis une autre web-app ... c'est pas la même application quoi ...
mais bon, en effet, ca marche aussi bien ...  
A condition de pas en abuser (pas déclarer 10 nouvelle web-app quoi) ca peut être une solution simple.
 
(mais c'est un peu de la bidouille quand même)


---------------
ma vie, mon oeuvre - HomePlayer
n°493963
benou
Posté le 22-08-2003 à 00:59:46  profilanswer
 

ozark74 a écrit :


en effet ... je viens de retester et ca fonctionne avec (ou sans) le / devant img2/*  


ben c'est vraiment étonnant : ca devrait te jarter lors du déploiement si ton mapping n'a pas une syntaxe correcte. En plus je me souviens que tomcat est très à cheval sur ce genre de truc : tu te manges un méchant message d'erreur et ta web-app est pas déployée :/


---------------
ma vie, mon oeuvre - HomePlayer
n°493964
the real m​oins moins
Posté le 22-08-2003 à 01:14:49  profilanswer
 

benou a écrit :


 
(mais c'est un peu de la bidouille quand même)

euh et une servlet qui va pomper un flux sur un fichier pour le recracher direct à tomcat c'est quoi alors? [:paysan]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°494009
benou
Posté le 22-08-2003 à 08:35:44  profilanswer
 

the real moins moins a écrit :

euh et une servlet qui va pomper un flux sur un fichier pour le recracher direct à tomcat c'est quoi alors? [:paysan]


[:dawa] ben comment tu crois que ca marche le truc par défaut de tomcat qui permet de lire les fichiers statiques qui sont dans la web-app ?
C'est une servlet qui fait exactement la même chose que le code que j'ai donné !
Sous Tomcat elle s'appelle DefaultServlet je crois.
 
Donc, non c'est pas de la bidouille, c'est un focntionnement complètement normal.  :kaola:


Message édité par benou le 22-08-2003 à 08:36:31

---------------
ma vie, mon oeuvre - HomePlayer
n°494026
darklord
You're welcome
Posté le 22-08-2003 à 08:59:10  profilanswer
 

benou a écrit :


[:dawa] ben comment tu crois que ca marche le truc par défaut de tomcat qui permet de lire les fichiers statiques qui sont dans la web-app ?
C'est une servlet qui fait exactement la même chose que le code que j'ai donné !
Sous Tomcat elle s'appelle DefaultServlet je crois.
 
Donc, non c'est pas de la bidouille, c'est un focntionnement complètement normal.  :kaola:


 
[:prosterne]

n°494336
the real m​oins moins
Posté le 22-08-2003 à 12:49:54  profilanswer
 

benou a écrit :


[:dawa] ben comment tu crois que ca marche le truc par défaut de tomcat qui permet de lire les fichiers statiques qui sont dans la web-app ?
C'est une servlet qui fait exactement la même chose que le code que j'ai donné !
Sous Tomcat elle s'appelle DefaultServlet je crois.
 
Donc, non c'est pas de la bidouille, c'est un focntionnement complètement normal.  :kaola:

ha bon [:gratgrat]
'fin oui ça à du sens c'est vrai... mais quand tu imagines ça avec un apache derriere tomcat ça fait un peu ridicule :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°494343
benou
Posté le 22-08-2003 à 12:56:10  profilanswer
 

the real moins moins a écrit :

ha bon [:gratgrat]
'fin oui ça à du sens c'est vrai... mais quand tu imagines ça avec un apache derriere tomcat ça fait un peu ridicule :o


bof ... la servlet dont je parle c'est elle qui est chargée de faire que tomcat fasse aussi serveur http en standalone, donc non c'est pas ridicule ...


---------------
ma vie, mon oeuvre - HomePlayer
n°494367
the real m​oins moins
Posté le 22-08-2003 à 13:35:41  profilanswer
 

quand y'a un apache derriere j'ai dit :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°494440
benou
Posté le 22-08-2003 à 14:54:16  profilanswer
 

the real moins moins a écrit :

quand y'a un apache derriere j'ai dit :o


bha même : dans certains qu'à t'en as besoin. Par exemple si tu veux faire du contrôle d'accès sur des fichiers statiques... [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°494444
the real m​oins moins
Posté le 22-08-2003 à 14:56:04  profilanswer
 

benou a écrit :


bha même : dans certains qu'à t'en as besoin. Par exemple si tu veux faire du contrôle d'accès sur des fichiers statiques... [:spamafote]

ben oui bien sur mais ds ce cas ta servlet n'est plus aussi conne ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°494456
benou
Posté le 22-08-2003 à 15:02:33  profilanswer
 

the real moins moins a écrit :

ben oui bien sur mais ds ce cas ta servlet n'est plus aussi conne ;)


si si le contrôle d'accès est fait dans un filtre comme c'est souvent le cas ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°494458
the real m​oins moins
Posté le 22-08-2003 à 15:04:37  profilanswer
 

benou a écrit :


si si le contrôle d'accès est fait dans un filtre comme c'est souvent le cas ;)
 

très juste [:aloy]
 
tiens benou, tu as déjà utilisé xdoclet avec des servlets et autres?
c'est trop :love: de pas devoir se coltiner le web.xml à la main :love:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°494464
drasche
Posté le 22-08-2003 à 15:10:52  profilanswer
 

Je tape l'incruste une minute pour saluer mon pote Ozark [:draschke]
 
ne lui en voulez pas, il a pas encore bien l'habitude d'HFR mais j'instruirai mon padawan sur les "bonnes manières" du coin :D
 
 
Signé Drasche le vieux Klingon.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°494470
the real m​oins moins
Posté le 22-08-2003 à 15:13:49  profilanswer
 

drasche a écrit :

ne lui en voulez pas

bah y'a pas de raison :wahoo:
 
 
c'est qui? [:dawa]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  alias sous Tomcat (résolu)

 

Sujets relatifs
[JS]Je comprend pas mon erreur ... <option> dynamique - résolu[Servlet - tomcat] pb de deployment
Création, emploi de librairies statiques avec GCC [proprement résolu]Problème d'adaptation de script. (Résolu mais voir fin)
[PHP, MYSQL] [résolu]Comment optimiser ce code? (nombreux SELECT FROM)[linux] empêcher un programme de se lancer plusieurs fois : résolu
Système de couleurs personalisées avec JS compatible Mozilla [résolu][Résolu] Impossible d'exécuter des javascript
Time Format [Resolu][Résolu] formulaire => données envoyés à fonction php ?
Plus de sujets relatifs à : alias sous Tomcat (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR