[Java/Struts] Déclencher des actions (.do) dans une Action...

Déclencher des actions (.do) dans une Action... [Java/Struts] - Java - Programmation

Marsh Posté le 31-03-2005 à 23:36:20    

Bonjour à tous,
 
Voici mon problème : j'ai une ferme de serveurs X1 à Xn basés sur Struts. Ces serveurs X1 à Xn ont, parmi toutes les servlets qu'ils acceptent, un "/admin/serverState.do" qui renvoie une description (plus ou moins) binaire de leur état (pour cela, pas de souci, j'ai écrit dans le ServletOutputStream renvoyé par la response.getOutputStream() de l'action associée).
 
J'ai par ailleurs un serveur d'administration Y, également basé sur Struts, à qui on va demander de faire un rapport sur l'état d'activité (plus ou moins détaillé) des serveurs X1 à Xn (disons, lorsqu'un navigateur demande "/admin/report.do" ). Y connaît bien sûr l'addresse de chacun des serveurs X1 à Xn.
 
Ce que je veux faire, c'est, dans l'action associée à "/admin/report.do", pouvoir déclencher n actions "/admin/serverState.do" sur les différents serveurs de ma ferme, et en décrypter leur réponse pour pouvoir en fabriquer une synthèse (synthèse qui sera ensuite affichée très classiquement par une JSP). Bref, d'une certaine manière, je voudrais que mon serveur Y se comporte comme un client des serveurs X1 à Xn.
 
Et vous l'aurez compris, je ne veux pas que la JSP associée au rapport de Y invoque directement la ou les JSP associée(s) au(x) "serverState.do" par un <jsp:forward> ou un <jsp:include> (d'ailleurs, il n'y a pas de telle JSP sur les serveurs X1 à Xn, puisque "/admin/serverState.do" renvoie directement un flux de caractères dans l'action associée, sans faire de forward).
 
Comment faire ?

Reply

Marsh Posté le 31-03-2005 à 23:36:20   

Reply

Marsh Posté le 01-04-2005 à 09:51:46    

bon ca l'air assez complexe et je suis pas assez cale pour t'aider je pense mais peut etre une piste en utilisant les chaines de responsabilite du style :

Code :
  1. <action path  = "/sourceAction"
  2.             type  = "com.acme.struts.Action1"
  3.             name  = "myForm"
  4.             input = "/WEB-INF/jsp/error1.jsp">
  5.             <forward name="OK" path="/targetAction.do"/>
  6.     </action>


pris d'un exemple de the server side  
http://www.theserverside.com/artic [...] ionMapping
 
tu forwarde vers une autre action et pas vers une jsp, enfin si j'ai bien compris


Message édité par sebi le 01-04-2005 à 10:06:50
Reply

Marsh Posté le 01-04-2005 à 10:55:47    

Le problème, c'est que j'ai n actions et non une seule à exécuter. Et sur d'autres serveurs en plus, qui ne sont connus que du code Java, pas du struts-config.xml (parce que leur liste a été préalablement extraite dynamiquement). C'est pour cela que je ne vois pas comment faire avec un simple forward.
 
Bon, OK, à vue de nez, le fait d'envoyer une requête sur un autre serveur plutôt que sur le même serveur doit pouvoir se régler avec un forward et une JSP (il suffit que l'IP et le port de l'autre serveur soient passés en paramètre d'URL et la JSP doit pouvoir s'occuper du reste en faisant un <jsp:forward> ).
 
Reste la problématique de déclencher n actions dans une Action...


Message édité par BifaceMcLeOD le 01-04-2005 à 11:04:12
Reply

Marsh Posté le 03-04-2005 à 14:13:53    

Utilise Commons HttpClient pour invoquer tes n actions "/admin/serverState.do" depuis ton serveur d'admin (action "/admin/report.do" ).
 
edit: Ce que tu veux faire n'est pas possible (imho) avec le fichier struts-config.xml


Message édité par machinbidule1974 le 03-04-2005 à 14:28:13
Reply

Marsh Posté le 04-04-2005 à 11:47:14    

Merci !

Reply

Sujets relatifs:

Leave a Replay

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