[WEB SERVICES][AXIS] comment forcer le paramètre scope "application"?

comment forcer le paramètre scope "application"? [WEB SERVICES][AXIS] - Java - Programmation

Marsh Posté le 09-08-2006 à 16:19:14    

Bonjour
 
J'ecris un web service en java qui doit fonctionner comme un singleton.
 
J'ai donc rajouté la ligne suivant <parameter name="scope" value="application"/> dans le fichier WSDD générer.
 
Mais c'est agaçant de devoir réécrire cette ligne, à chaque fois que je regénère mon web service (apres ajout d'une méthode par exemple) ... et j'ai surtout peur que plus tard si le web service évolue, je ne serai pus là (car je suis en stage dans la société) et le risque d'oublie du rajout de cette ligne dans le WSDD est grand.
 
alors est-il possible d'indiquer dans mon code java, qu'à la compilation dans AXIS, ce dernier doit rajouter ce parametre ( <parameter name="scope" value="application"/> ) dans le fichier wsdd généré ?


Message édité par nemohp le 09-08-2006 à 16:57:08
Reply

Marsh Posté le 09-08-2006 à 16:19:14   

Reply

Marsh Posté le 09-08-2006 à 16:39:34    

Tu peux preciser le probleme , un web service qui doit fonctionner comme un singleton ? donne un exemple ?  

Reply

Marsh Posté le 09-08-2006 à 17:00:56    

par exemple une classe porte-monnais avec un attribut montant.
 
avec une methode ajouter(float argent);
 
 
si tu n'es pas en scope application (qui génère un singleton), le montant ajouter va modifier le montant de la classe. mais à l'appel suivant le montant reprendra sa valeur initial car Axis rappel le constucteur a chaque fois.
 
bref en rajoutant le scope application , ça marche, mais je cherche à ce que cette ligne soir automatiquement intégré au WSDL, lors de la génération de ce dernier.
 

Reply

Marsh Posté le 09-08-2006 à 17:11:23    

Pourquoi est ce que tu ne crée pas un VRAI SINGLETON que ton service appelera à la demande  ?  
 
Comme ca le "metier de ton appli c'est dans ton singleton et les appels de fonction c'est dans le Service ?

Reply

Marsh Posté le 09-08-2006 à 17:14:03    

car AXIS appelle toujours le constructeur et pas un getInstance() ... mais si tu veux me recoder le projet Apache Axis je veux bien  :D

Reply

Marsh Posté le 09-08-2006 à 17:19:00    

ben ecoute recoder axis peut être pas mais en revanche je l'ai déjà fait , pour un correcteur d'orthographe ou il fallait charger des dictionnaires ( super long) et ca marchait très bien , il faudrait que je retrouve le truc mais c'est possible

Reply

Marsh Posté le 09-08-2006 à 19:35:26    

ton singleton est un attribut de ta classe, et tu wrap les méthodes fournites dans ton service pour faire appel à ton singleton.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 10-08-2006 à 09:55:11    

nemohp a écrit :

car AXIS appelle toujours le constructeur et pas un getInstance() ... mais si tu veux me recoder le projet Apache Axis je veux bien  :D


Le monsieur te parle d'un vrai singleton métier, que ton webservices utilisera.
 

Code :
  1. class SingletonClass
  2. {
  3.       private String valuePouet;
  4.       public void setValuePouet(String truc)
  5.       {
  6.             valuePouet = truc;
  7.       }
  8. }
  9. class SingletonClassFactory
  10. {
  11.      private SingletonClass singletonInstance = new SingletonClass();
  12.      public SingletonClass getInstance()
  13.      {
  14.             return this.singletonInstance;
  15.      }
  16. }
  17. interface IWebService
  18. {
  19.          public void setTheValue(String value) throws blablabla;
  20. }
  21. class WebServiceImpl implements IWebService
  22. {
  23.         public void setTheValue(String value) throws blablabla
  24.         {
  25.                 SingletonClassFactory scf = new SingletonClassFactory();
  26.                 SingletonClass instance = scf.getInstance();
  27.                 instance.setValue(value);
  28.         }
  29. }


 
Dans le genre....
J'ajouterais que tu sembles vouloir utiliser un singleton pour faire de la persistence de ta donnée, faudrait prévoir une autre couche pour ça peut-être.


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 10-08-2006 à 10:56:00    

boulax a écrit :


J'ajouterais que tu sembles vouloir utiliser un singleton pour faire de la persistence de ta donnée, faudrait prévoir une autre couche pour ça peut-être.


 
oui justement Axis le gere. Pour cela je dois rajouter a fameuse ligne (scope application) à la main. Ensuite Axis génère un mécanisme de singleton dans son moteur. donc je ne veux pas faire un singleton, je veux juste que Axis à la génération du WSDL (Java2WDL) rajoute directement cette ligne !
 
donc merci pour vos solutions de singleton métier :jap:  mais ce n'est pas ça que je cherche...

Reply

Marsh Posté le 10-08-2006 à 11:06:45    

Ouais, je me reposerai pas trop sur axis pour un truc aussi crucial. Tu l'as dit toi meme, si l'on oublie cette ligne, tout pète. D'ou l'idée de faire figurer cette logique dans le métier. C'est pas le boulot d'axis de faire ça après tout, tout ce qu'on lui demande c'est d'exposer un service [:spamafote]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 10-08-2006 à 11:06:45   

Reply

Marsh Posté le 10-08-2006 à 11:07:38    

Tu génères comment tes fichiers sinon ? (ide ?)


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 10-08-2006 à 11:46:19    

En faite je code sous eclipse mes classes java.  
Puis avec le plugin  WTP je génère et test mes WebServices.
Une fois que tout marche j'exporte le projet en WAR (avec Axis qui a été intégré au projet par WTP)
Enfin j'upload le WAR sur le serveur final.  
Les WS sont en ligne.
 
Ce n'est pas la meilleure solution, mais je devais trouver une procédure simple pour que les futures MAJ du projet soit faite par les développeurs de la société (qui ne sont dans le domaine du dev' java et web).


Message édité par nemohp le 10-08-2006 à 11:47:21
Reply

Sujets relatifs:

Leave a Replay

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