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

  FORUM HardWare.fr
  Programmation
  Java

  [apache/AXIS] comment fait-on pour les objets??

 


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

[apache/AXIS] comment fait-on pour les objets??

n°312955
arghbis
salops de dauphins
Posté le 19-02-2003 à 13:05:56  profilanswer
 

salut tout le monde!
dans le cadre de mes activités diverses et variées, je suis amené à faire un webservice en Java, et j'ai donc choisi comme support apache/AXIS. bon ok, je vois comment s'en servir pour des choses simples, mais là une question insidieuse me turlupine : comment fait-on pour récuprérer des objets envoyés par le client???
des tpes simples (String et autres) c pas compliqué, mais les objets, pas d'idée!
vous savez??

mood
Publicité
Posté le 19-02-2003 à 13:05:56  profilanswer
 

n°312979
--greg--
Posté le 19-02-2003 à 13:18:47  profilanswer
 

[:blueflag]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°312991
arghbis
salops de dauphins
Posté le 19-02-2003 à 13:27:51  profilanswer
 

[:the time]  pourquoi un drapal?? ça t'intéresse aussi??
 
PS: pourquoi j'ai pu l'option "savoir par mail si quelqu'un répond à mon post"??? je sais que ça a rien à voir avec le topic, mais bon, j'en profite!

n°313073
--greg--
Posté le 19-02-2003 à 14:27:58  profilanswer
 

arghbis a écrit :

[:the time]  pourquoi un drapal?? ça t'intéresse aussi??

oui :D
 
pour ton autre question, aucune idée.
t'as qu'a venir de temps en temps ;)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°313116
arghbis
salops de dauphins
Posté le 19-02-2003 à 15:03:41  profilanswer
 

j'ai compris!! en haut y'a marquer activer la notification par email, ce doit être la fonction qui remplace la case à cocher!!  [:pioupiou]

n°313236
arghbis
salops de dauphins
Posté le 19-02-2003 à 16:43:10  profilanswer
 

j'ai vraiment besoin d'une réponse, alors [:kecje]!
je me doute à peu près du comment ça marche, mais j'aimerais bien une réponse de kelk'un ki l'a déjà fait avan de me lancer dans des trucs pendables et que ça marche poas à la fin!  :cry:

n°313459
arghbis
salops de dauphins
Posté le 19-02-2003 à 20:21:43  profilanswer
 

alors, un dernier petit up et pis sinon tant pis!
 
 [:kecje]  :bounce:  :bounce:  :bounce:  :bounce:

n°313477
--greg--
Posté le 19-02-2003 à 20:45:54  profilanswer
 

arghbis a écrit :

salut tout le monde!
dans le cadre de mes activités diverses et variées, je suis amené à faire un webservice en Java, et j'ai donc choisi comme support apache/AXIS. bon ok, je vois comment s'en servir pour des choses simples, mais là une question insidieuse me turlupine : comment fait-on pour récuprérer des objets envoyés par le client???
des tpes simples (String et autres) c pas compliqué, mais les objets, pas d'idée!
vous savez??

bon j'ai justement fait un peu d'axis aujourd'hui :D
bon, en fait moi j'ai fait l'inverse (j'envoie des objets maison en reponse), mais à priori la manip doit etre a peu pres la meme. Tu as un deploy.xml pour ton service, et bien tu declares simplement ton objet la dedans en mappant un nom xsi (euh je crois) a une classe Java (ou autre, d'ailleurs).
Si tu veux la syntaxe précise, va falloir attendre demain ;)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°313494
arghbis
salops de dauphins
Posté le 19-02-2003 à 21:06:19  profilanswer
 

ben c à peu près ce que je pensais, mais si tu as la syntaxe demain, je la veux bien! merci!  :hello:

n°313629
darklord
You're welcome
Posté le 19-02-2003 à 23:40:00  profilanswer
 

Je peux te donner la solution pour un bean, qui est l'exemple le plus fréquent. Je te conseille fortement de passer par ce genre de mécanisme (après tout je suppose que ton appel SOAP te renvoit un objet business -> javabean est la meillere solution).
 
Suppose que ta méthode SOAP renvoit un JavaBean Customer. Tu dois bien t'arranger pour que les propriétés suivantes soient respectées :
 

  • Constructeur vide
  • Propriétés privées
  • getter/setter
  • implements java.io.Serializable


exemple
 

Code :
  1. package com.society.app;
  2. /**
  3. * Generic Javabean used as SOAP response for XXXX calls.
  4. *  
  5. */
  6. public class Customer implements java.io.Serializable {
  7.    
  8.     private String name;
  9.     public Customer() {}
  10.     /**
  11.      * Returns the customer's name.
  12.      * @return the name of the customer
  13.      */
  14.     public String getName() {
  15.         return name;
  16.     }
  17.     /**
  18.      * Sets the customer's name.
  19.      * @param name the name of the customer
  20.      */
  21.     public void setName(String name) {
  22.         this.name = name;
  23.     }
  24. }


 
Ensuite suppose que tu as ta méthode SOAP
 

Code :
  1. public Customer getCustomer(String customerID)


 
Tu as ds ton fichier de deploiement un truc du genre
 

Citation :


<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <service name="XXXXXXXXXXXXX" provider="java:EJB">
  <parameter name="beanJndiName" value="ejb/CustomerManager"/>
  <parameter name="homeInterfaceName" value="com.society.app.CustomerManagerHome"/>
  <parameter name="remoteInterfaceName" value="com.society.app.CustomerManager"/>
  <parameter name="allowedMethods" value="getCustomer"/>  
  <parameter name="jndiURL" value="jnp://localhost:1099"/>
  <parameter name="jndiContextClass" value="org.jnp.interfaces.NamingContextFactory"/>
  <beanMapping qname="pocNS:Customer" xmlns:pocNS="urn:CustomerManagerService" languageSpecificType="java:com.society.app.Customer" />
 </service>
</deployment>


 
bon si je m'ennuie je te montre après comment faire pour récupérer les données au niveau du code lui meme :o


Message édité par darklord le 19-02-2003 à 23:40:32

---------------
Just because you feel good does not make you right
mood
Publicité
Posté le 19-02-2003 à 23:40:00  profilanswer
 

n°313632
darklord
You're welcome
Posté le 19-02-2003 à 23:43:34  profilanswer
 

Alors pour le client  
 

Code :
  1. URL endpoint =
  2.                 new URL("http://super.dev.app.org:8880/axis/services/XXXXXXXXXXXXXXXX" );
  3.             // getCustomer
  4.             Service service = new Service();
  5.             Call call = (Call)service.createCall();
  6.             QName qn = new QName("urn:CustomerManagerService", "Customer" );
  7.             call.registerTypeMapping(Customer.class, qn,
  8.                       new BeanSerializerFactory(Customer.class, qn),
  9.                       new BeanDeserializerFactory(Customer.class, qn));
  10.             call.setTargetEndpointAddress(endpoint);
  11.             call.setOperationName(new QName("", "getCustomer" ));
  12.             Customer resp = (Customer)call.invoke(new Object[]{"The_Customer_Id"});


 
et voilà tu as récupéré ton bean Customer ... Si tu as d'autres questions ...


---------------
Just because you feel good does not make you right
n°313634
darklord
You're welcome
Posté le 19-02-2003 à 23:45:25  profilanswer
 

ah merde j'ai mal lu ... Tu veux envoyer des objets spécifiques et les récupérer au niveau de ton EJB? Bin y a rien de compliqué à priori si ton beanMapping est fait (voir deploiement)


---------------
Just because you feel good does not make you right
n°313692
arghbis
salops de dauphins
Posté le 20-02-2003 à 08:51:58  profilanswer
 

je te remercie pour le mal que tu t'es donné! c à peu près ce que je pensais faire (à quelques subtilités près, que je n'avais pas vues), mais c cool d'avoir un exemple concret!
 
 [:spikler]

n°313693
darklord
You're welcome
Posté le 20-02-2003 à 08:58:46  profilanswer
 

arghbis a écrit :

je te remercie pour le mal que tu t'es donné! c à peu près ce que je pensais faire (à quelques subtilités près, que je n'avais pas vues), mais c cool d'avoir un exemple concret!
 
 [:spikler]  


 
you're welcome ;)
pour la réception de données custom ca ne devrait pas etre trop dur si tu fait ton bean mapping :)
 
tiens nous au courant ok?


---------------
Just because you feel good does not make you right
n°313712
benou
Posté le 20-02-2003 à 09:17:51  profilanswer
 

DarkLord a écrit :

Alors pour le client  
 

Code :
  1. URL endpoint =
  2.                 new URL("http://super.dev.app.org:8880/axis/services/XXXXXXXXXXXXXXXX" );
  3.             // getCustomer
  4.             Service service = new Service();
  5.             Call call = (Call)service.createCall();
  6.             QName qn = new QName("urn:CustomerManagerService", "Customer" );
  7.             call.registerTypeMapping(Customer.class, qn,
  8.                       new BeanSerializerFactory(Customer.class, qn),
  9.                       new BeanDeserializerFactory(Customer.class, qn));
  10.             call.setTargetEndpointAddress(endpoint);
  11.             call.setOperationName(new QName("", "getCustomer" ));
  12.             Customer resp = (Customer)call.invoke(new Object[]{"The_Customer_Id"});


 
et voilà tu as récupéré ton bean Customer ... Si tu as d'autres questions ...


 
Pourquoi tu utilises pas plutot les stubs généréré avec WSDL2Java ?? c'est lourd d'utiliser l'objet Call à la mimine

n°313713
darklord
You're welcome
Posté le 20-02-2003 à 09:18:25  profilanswer
 

explique toi tu m'intéresse :)


---------------
Just because you feel good does not make you right
n°313718
arghbis
salops de dauphins
Posté le 20-02-2003 à 09:20:43  profilanswer
 

+1 :D

n°313727
darklord
You're welcome
Posté le 20-02-2003 à 09:24:13  profilanswer
 


 
 [:rofl]


---------------
Just because you feel good does not make you right
n°313741
benou
Posté le 20-02-2003 à 09:41:43  profilanswer
 

Dans un AXIS, y a un utilitaire qui s'appelle WSDL2JAVA qui permet d'analyser la structure du WSDL, d'en déduire les service exposés et les objets transitoires, et qui créént les stubs et javabeans qui correspondent.
 
après tu as plus qu'à construire un objet servicen appeler la méhode que tu veux dessus comme si c'était un objet locale ...
 
Pour moi, c'est un des principaux avantage d'axis.
 
c'est assez bien expliqué là : http://cvs.apache.org/viewcvs.cgi/ [...] , and data
 
edit ! marche pas le lien :(


Message édité par benou le 20-02-2003 à 09:42:14
n°313769
darklord
You're welcome
Posté le 20-02-2003 à 10:25:15  profilanswer
 

j'avais vu cette utilitaire mais j'avais pas plus regardé que ca, merci. de toutes facons notre client est fait en C donc ... Ct juste un petit client java de test :/


---------------
Just because you feel good does not make you right
n°313772
benou
Posté le 20-02-2003 à 10:28:55  profilanswer
 

ben tu peux aussi générer les stubs serveurs avec ca ...
Bien sûr, ca a un intérêt que si tu commences à bosser à partir d'un WSDL.
 
Sinon, y a aussi l'outil inverse : Java2WSDL qui est util quand t'as un service java que tu veux transformer en WebService

n°313776
arghbis
salops de dauphins
Posté le 20-02-2003 à 10:32:47  profilanswer
 

ah tiens?? ça, ça m'intéresse beaucoup! en effet, je développe la partie serveur de telle sorte qu'on puisse l'utiliser en "local", mais il faut aussi la mettre en accès via un webservice. Donc si je comprend bien, ayant programmé l'application, j'utilise java2wsdl, j'obtiens un fichier wsdl qui me permet de déployer l'appli?? c ça?? et donc de générer facilement le client à la suite! c cool ça! :love:

n°313780
benou
Posté le 20-02-2003 à 10:34:27  profilanswer
 

c'est exactement ca ...
mais bon, faut que tu penses tout de suite à bien séparer le client et le serveur et à envoyer que des types simple ou des beans entre les 2 ...


Message édité par benou le 20-02-2003 à 10:35:03
n°313783
arghbis
salops de dauphins
Posté le 20-02-2003 à 10:37:57  profilanswer
 

des types simples?? ah ben non alors!!
moi le client m'envoie des objets complexes! et moi je lui renvoie des types simples effectivement!
 
ça marche pu dans ce cas là???  :cry:  :cry:

n°313784
benou
Posté le 20-02-2003 à 10:39:43  profilanswer
 

qu'est ce que tu appelles objets complexes ?

n°313788
arghbis
salops de dauphins
Posté le 20-02-2003 à 10:42:07  profilanswer
 

et bien ce n'est pas un String ni un int. c un objet composé de Collection, HashMap, types primitifs (String, int, etc) et d'autres types perso définis!

n°313798
darklord
You're welcome
Posté le 20-02-2003 à 10:48:38  profilanswer
 

arghbis a écrit :

et bien ce n'est pas un String ni un int. c un objet composé de Collection, HashMap, types primitifs (String, int, etc) et d'autres types perso définis!


 
bin rien ne t'empeche de faire un bean de tout ca hein :)


---------------
Just because you feel good does not make you right
n°313801
arghbis
salops de dauphins
Posté le 20-02-2003 à 10:50:36  profilanswer
 

donc, au final :
- la solution de benou, c super si tu ne passe que des types simples (String, int, et autres)
- la solution de DarkLord, c super si tu as besoin de types complexes
 
right?? :??:

n°313814
benou
Posté le 20-02-2003 à 10:57:37  profilanswer
 

non pas right du tout !
 
j'ai jamais dit que tu pouvais passer que des types simples !
 
tu peux passer des types que Axis connait. De base, il connait les types simples, les beans (d'ailleur il ne respecte pas exactement la norme javabean :o ), et un certains nombre d'autres classes (dont certaines de java.util).
 
Mais bon, le plus simple c'est de ne passer que des types simples et des beans. Là t'es sûr de pas avoir de problèmes !

n°313818
arghbis
salops de dauphins
Posté le 20-02-2003 à 10:59:29  profilanswer
 

donc si je convertit mon objet en bean, ça marche (désolé, chuis un peu lent à la comprenette, ça fait que 2 jours que je fais du java!)

n°313821
benou
Posté le 20-02-2003 à 11:01:33  profilanswer
 

ca fait 2 jours que tu fais du java et tu te lance dans AXIS ?? [:totoz]
 
sinon la réponse est oui.


Message édité par benou le 20-02-2003 à 11:02:18
n°313825
arghbis
salops de dauphins
Posté le 20-02-2003 à 11:05:44  profilanswer
 

ben j'ai déjà fait un peu de java, mais c t y'a longtemps! et si tu veux, là j'arrive dans un projet où tout est fait en java, sur plusieurs sites. Donc bon, développer la partie java, j'y arrive (c un peu laborieux car les classes qui sont déjà développées sont énormes et ça fait pas longtmps que je bosse dessus), mais le coup du axis avec les types "complexe" les beans et autrs, g t un peu dépassé. Maintenant, ça va mieux! merci pour vos explications!  [:spikler]

n°313902
darklord
You're welcome
Posté le 20-02-2003 à 11:50:59  profilanswer
 

arghbis a écrit :

donc si je convertit mon objet en bean, ça marche (désolé, chuis un peu lent à la comprenette, ça fait que 2 jours que je fais du java!)


 
voir 3 posts plus haut :o


---------------
Just because you feel good does not make you right
n°313910
arghbis
salops de dauphins
Posté le 20-02-2003 à 11:54:20  profilanswer
 

vi, c vrai!!  :jap:  :jap:  

n°314420
the real m​oins moins
Posté le 20-02-2003 à 22:34:05  profilanswer
 

et je confirme que le coup du bean déclaré avec le <beanMapping> marche dans les deux sens (aussi bien en "reception" par axis (request du client) qu'en response, testé et approuvé cet aprem :love:

n°314422
darklord
You're welcome
Posté le 20-02-2003 à 22:36:50  profilanswer
 

the real moins moins a écrit :

et je confirme que le coup du bean déclaré avec le <beanMapping> marche dans les deux sens (aussi bien en "reception" par axis (request du client) qu'en response, testé et approuvé cet aprem :love:


 
 :whistle:


---------------
Just because you feel good does not make you right
n°314428
benou
Posté le 20-02-2003 à 22:41:12  profilanswer
 

par curiosité, vous vous en servez pour quels genre de besoin des web services ??

n°314430
darklord
You're welcome
Posté le 20-02-2003 à 22:42:20  profilanswer
 

benou a écrit :

par curiosité, vous vous en servez pour quels genre de besoin des web services ??


 
On s'en sert pour tracker l'état des colis -> MP si tu veux des détails


---------------
Just because you feel good does not make you right
n°314475
the real m​oins moins
Posté le 20-02-2003 à 23:40:09  profilanswer
 

DarkLord a écrit :


 
On s'en sert pour tracker l'état des colis -> MP si tu veux des détails

moi j'aurais simplement dit "pour offrir une interface des clients distants (non-java, qui plus est) vers l'application server/les ejb" :o

n°314485
darklord
You're welcome
Posté le 20-02-2003 à 23:47:44  profilanswer
 

the real moins moins a écrit :

moi j'aurais simplement dit "pour offrir une interface des clients distants (non-java, qui plus est) vers l'application server/les ejb" :o


 
bin voilà tu l'as dit :o


---------------
Just because you feel good does not make you right
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  [apache/AXIS] comment fait-on pour les objets??

 

Sujets relatifs
[Php/Apache] Cryptage MD5 différent ??Demarrage Apache et Tomcat en auto sur Solaris
Peut on recuperer la resolution d'un ecran client avec Apache/PHP ?PHP/Apache et ASP/IIS : conflit ?
Modifier le repertoire d'accueil de mon appli sous Apache - Tomcat[ Php ] Problèmes sessions (depuis plantage apache )
[ Php/Oracle/Apache ] Plantage d'apache à cause des librairies oracle[Apache / PHP] Problème de transmission de variable avec mod_rewrite
[PHP] Apache ne veux pas se lancerVB6 et objets graphiques en 3d
Plus de sujets relatifs à : [apache/AXIS] comment fait-on pour les objets??


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