IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

[doctrine] [SAOP] Doctrine et webservices soap JAX-WS en j2ee


Sujet :

ORM PHP

  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut [doctrine] [SAOP] Doctrine et webservices soap JAX-WS en j2ee
    Salut tous le monde,

    Je suis confronté à un grand problème pour consommer les web services implémenté autour du protocole JAX-WS en J2EE.

    enfaite on utilise l'ORM hibernante pour la persistance de nos objets.
    On est entrain de développer une application web PHP (Symfony+doctrine) avec un middleware en J2EE et des webservices.
    Les web services sont implémentés en java bien sure et le client PHP ne fait que consommer ces web sevices pour avoir le retour et appliquer le modèle MVC(Symfony) ou envoie des objets qui seront totalement traiter par le middleware (update,persist,....).
    Comme doctrine est aussi un ORM, on ne sait pas comment l'appliquer avec les webservice SOAP.les deux ne marche pas ensemble normalement.ET le client nous affirme qu'on pourrait utiliser la bibliothèque doctrine avec des webservcie SAOP même si l'application Symfony ne fait que consommer ces web services et aucune action ou connexion vers la base n'est effectué.

    Si quelqu'un à un conseil ou un petit bout d'idée, qu'il me vient en aide.
    Merci.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Un petit schéma des échanges entres les différentes serveurs et clients ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    Merci pour la réponse!
    je ne vous ai pas bien compris désoler.Que voulez vous dire exactement?

    d'une autre façon, est il possible d'utiliser doctrine dans se cas?
    et à quel point exactement?
    pour ma part, c'est insensé puisque doctrine + middleware qui gère la pertinence ne cohabite pas ensemble.
    Mais on m'affirme que c'est possible.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Salut,

    D'après ce que vous racontez, une partie des fonctions de persistance est déjà réalisée via Java/Hibernate et l'application PHP devra accéder aux objets correspondant via SOAP.

    Doctrine étant un autre framework de persistance, rien n'empêche de l'utiliser pour des besoins spécifiques à l'application PHP mais sur des objets différents que ceux gérés via SOAP.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    Tous les objets sont gérés via les webservices.Aucun traitement à la base n'est éfféctué directement en PHP/Symfony.

    Pourtant on me demande d'utiliser doctrine, chose qui me bloque vraiment.
    sur quel point pourrai-je faire ça.
    Merci pour votre réponse.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    je ne trouve qu'une solution à ce problème.c'est le fait de combiner Doctrine avec les requêtes/réponse SOAP.
    D'une autre manière, est il possible que lorsque on appelle par exemple la fonction 'save' de doctrine pour enregistrer un objet, on ajoute un intercepteur ou une fonction, avec laquelle on converti cet appel de méthode à une requête SOAP vers le webservice en question?Puis on pourra gérer le retour de la requête pour savoir son état.

  7. #7
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Deuxième essai.

    Peux-tu faire une description simple de ce que tu souhaites réaliser. Un schéma UML serait le mieux. Mais une description sans trop de présuposé informatique sera déjà très bien.

    Ensuite, dans un deuxième temps, si tu pouvais expliquer ce que tu veux réellement faire avec doctrine. Si tu souhaites utiliser doctrine pour accéder à des données via SOAP...

  8. #8
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    C'est très simple.

    La partie client est codé en PHP en utilisant symfony.
    le middleware est en java/hibernate et présente des web services.
    La partie client ne fait que consommer ces services.
    La liaison avec la base de données n'est effectué que par le middleware, aucune liaison n'est présente coté PHP.

    Si par exemple ,dans un formulaire,on remplit une entité Account,donc ce qui se passe, c'est que on envoie cet objet à travers une requête SOAP ou REST pour l'enregistrer dans la base de données.Pareil pour obtenir par exemple l'objet Account , on envoie une requête au webservice qui nous retournerai l'objet en question en (selon son ID ).
    On m'affirme que doctrine est un ORM de persistence,et que si on utilise hibernate, on utilise pas doctrine.Par contre, on m'affirme aussi que on pourrai utiliser doctrine dans ce cas la.Comment, à quel point,ou, quand ?je n'ai aucune idée.
    Je vous demande n conseil, une idée ,une faille une opportunité.Je suis très confus.
    Merci

  9. #9
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    En fait j'avais bien compris, mais tellement envie que cela soit autre chose que je ne voulais pas comprendre....

    Effectivement, en théorie Doctrine (pas symfony)(doctrine c'est un des ORM) est très souple et va utiliser des drivers pour accéder aux données.

    On peut donc imaginer un drivers propriétaire qui va utiliser les paramètres de connexion pour ouvrir un lien avec ton serveur et qui va convertir les requêtes de données en requêtes SOAP et les données récupérées en données Doctrine.

    En théorie.

    En pratique il va falloir créer une classe dérivée de Doctrine_Connection_Common (qui est la classe de connexion standard de symfony). J'ai jeté un œil très rapide, elle est clairement conçue pour fonctionner avec des bases orienté sur du SQL. Ce qui ne serait pas le cas, et va donc demander de réécrire la majeur partie des méthodes, en conservant les arguments d'entrées et de sortie.

    De plus, de nombreux arguments sont issus d'autre objets Doctrine : Doctrine_DataDict, Doctrine_Export,... il faudra donc vérifier s'il sont utilisable où s'il convient d'en créer des dérivés propres à notre connexion exotiques ce qui va notablement compliquer la tâche et n'est, pour certain, peut-être pas possible (s'il sont initié par un autre module, avant d'être envoyé à notre objet connexion, il ne sera pas possible de signaler à ce module d'utiliser notre instance à la place de l'instance standard.

    Donc, est-ce possible, le mieux que je puisse répondre est : peut-être. J'ai dans mes cartons un projet pour créer un drivers pour une base de données non structurées, mais je l'ai enfuis très profondément devant les difficultés à surmonter !

    Dans tous les cas, il m'étonnerait beaucoup que tu trouves ici (ou dans le forum dédié à Doctrine) beaucoup plus d'information que ce que j'ai pu te donner (si quelqu'un à déjà jouer à cela, on a besoin de lui MAINTENANT !).

    Je pense donc que le mieux serait d'aller voir du côté des mailing list de Doctrine (en anglais) ou des chanel IRC, (en anglais aussi).

    Perso, cela sort du cadre de l'aide que je peux consacrer bénévolement ici.

    Bonne chance.
    Michel

  10. #10
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    Merci,

    cela implique que je devrai surcharger toutes les méthodes relatives à doctrine pour configurer mon appel au webservice en question,tout en gardant le type de retour et les paramètres d'entré.

    Ça serait vraiment dure à faire non?
    je devrai donc pour la méthode save de doctrine,créer dans la méthode save de doctrine un appel SOAP pour lui envoyer l'objet a enregistrer.
    Merci

  11. #11
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Dans l'idée, cela ne consisterait qu'à surcharger les méthodes du drivers, ce qui est moins lourd que de réécrire tout Doctrine

    Maintenant, je me demande comment ton driver pourrait réagir s'il récupère une demande en DQL du genre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select c.* f.*
    from client c innerjoint fournisseur f on c.id = f.client_id
    where c.codepostal = '75000';

    Bon, pas en SQL, mais l'idée est là...

    Comment traiter cela avec tes serveurs ?

    De plus, tu va devoir créer des objets doctrine_record pour gérer les données granulaire (enregistrement), mais peux-t-on considérer cela comme des enregistrement ?

    L'idéal serait d'avoir un accès directe à la base de données... beaucoup plus simple à implémenter.

    Ce qui ne veut pas dire que ce n'est pas réalisable, il va juste falloir bien y réfléchir.

  12. #12
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    Enfaite,

    Je n'ai pas de requête SQL ou autre à envoyer via SOAP,
    juste des objets ou une structure de recherche à envoyer!
    par exemple, j'envoie un objet Account; Vehicule, Trip .... et je récupère des list de ces objets, je les modifie en envoyant les objets modifié ( pas des requêtes sql pour modifiner ni des requetes sql pour enregistrer ou bien selectionner)

    Juste manipulation d'objet ( si je veux récupérer un Account d'id 1 j'envoie l'id et le webservice crée la requete lui même pour extrair l'objet d'id 1)

    Si cela pourrait vous aider pour mieux entamer la problématique .
    Merci

  13. #13
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je suis bien d'accord, mais doctrine le sera-t-il ?

    Lui manipule des requêtes en DQL (le SQL propre à Doctrine). Et il va bien falloir les convertir en requêtes SOAP. Qui seront plus limités, pas de liaisons de tables, entre autre. Il faut voir comment va réagir Doctrine et s'il est capable d'émuler.

    Je pense que notre discutions va devenir stérile, il faut, maintenant, écrire du code et essayer.

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est quoi enfaite ton problème global kawe22 ? t'as fait plusieurs sujets qui parlent tous plus ou moins de la même chose. Ton projet c'est quoi ? et sur quoi tu bloque réellement ?

  15. #15
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    je vais demander l'avis d'un expert symfony qui m'assure qu'on peut utiliser doctrine dans ce cas la.

    je vous tiendrai au courant!
    merci pour vos réponses

  16. #16
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    A la réflexion je me demande s'il ne serait pas plus simple de créer un ensemble de classes indépendante qui permettent de récupérer les données.

    Reste à savoir pourquoi tu tiens à utiliser doctrine comme interface primaire. Si tu veux lier tes objets à des form, une classe indépendante pourrait sembler un inconvénient. Mais en fait, l'écriture d'une classe de form liée avec ton outils indépendant n'est pas très compliquée, moins que la jonction entre doctrine et un service SOAP.

    Ceci devrait te permettre un accès propre à tes données, ainsi que l'utilisation des form, filter et route.

  17. #17
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Par défaut
    C'est pas moin qui tient a utiliser doctrine,

    c'est l'expert qui m'affirme que je dois le faire!le client aussi.
    je vous tiendrai au courant la semaine prochaine quand l'expert viendra.

Discussions similaires

  1. webservices soap et php
    Par manuscle dans le forum WinDev
    Réponses: 0
    Dernier message: 16/04/2008, 16h35
  2. [Doctrine] Mettre doctrine en prod
    Par hpavavar dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/01/2008, 21h27
  3. Pb de specification d'url de webservice avec jax-ws
    Par fragozozo dans le forum Services Web
    Réponses: 1
    Dernier message: 19/11/2007, 16h24
  4. Réponses: 1
    Dernier message: 13/02/2007, 17h43
  5. Webservice SOAP et fichier attaché ?
    Par Bruno13 dans le forum Services Web
    Réponses: 13
    Dernier message: 03/04/2006, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo