ColdFusion implémente le moteur Apache Axis pour ses fonctionnalités de service Web. Malheureusement, CF ne tire pas pleinement profit du modèle d'objet SOAP et permet aux développeurs CF de "nouveau" les différents objets qui composent un service (ou de les sous-classer).
Heureusement, il y a quelque chose que nous pouvons faire à ce sujet. Lorsque vous accédez pour la première fois à un WSDL, l'axe génère un ensemble d'objets stub. Ce sont des classes java régulières qui contiennent getters et setters pour les propriétés de base de l'objet. Nous devons utiliser ces stubs pour construire notre objet.
Pour utiliser ces talons cependant, nous avons besoin de les ajouter au chemin de classe ColdFusion :
Step 1) Access the WSDL in any way with coldfusion.
Step 2) Look in the CF app directory for the stubs. They are in a "subs"
directory, organized by WSDL.like:
c:\ColdFusion8\stubs\WS\WS-21028249\com\foo\bar\
Step 3) Copy everything from "com" on down into a new directory that exists in
the CF class path. or we can make one like:
c:\ColdFusion8\MyStubs\com\foo\bar\
Step 4) If you created a new directory add it to the class path.
A, open CF administrator
B. click on Server settings >> Java and JVM
C. add the path to "ColdFusion Class Path". and click submit
D. Restart CF services.
Step 5) Use them like any other java object with <CFObject /> or CreateObject()
MyObj = CreateObject("java","com.foo.bar.MyObject");
Remember that you can CFDump the object to see the available methods.
<cfdump var="#MyObj#" />
Votre objet de compte doit être dans les talons. Si vous avez besoin de le créer pour une raison quelconque, vous devrez le faire dans un nouveau fichier de classe Java
Généralement lorsque vous travaillez avec autant de Java, cfscript est le chemin à parcourir.
enfin, le code ressemblerait à ceci:
<cfscript>
// create the web service
ArgStruct = StructNew();
ArgStruct.refreshWSDL = True;
ArgStruct.username = 'TestUserAccount';
ArgStruct.password = '[email protected]';
ws = createObject("webservice", "http://localhost/services.asmx?WSDL",ArgStruct);
account = CreateObject("java","com.foo.bar.Account");
account.SetBaz("hello world");
ws.Update(account);
</cfscript>
J'apprécie vraiment le conseil. Entre ceci et d'autres problèmes, l'intégration a été annulée avant que j'aie essayé ceci, ainsi je ne marquerai pas comme correct (puisque je ne peux pas confirmer), mais je lui donnerai un upvote. –