2010-07-28 7 views
0

La fonction createClassFromWsdl de MATLAB présente certaines limitations importantes, telles que la non-prise en charge des attributs. Il me semble que la capacité d'Apache CXF à générer dynamic clients pourrait être un moyen d'accéder à une plus grande variété de points de terminaison SOAP d'une manière relativement conviviale. Ajouter simplement les fichiers JAR appropriés à votre chemin de classe MATLAB vous permet de créer de manière interactive des clients robustes à partir de la ligne de commande MATLAB. Quelqu'un at-il essayé cela? Quelqu'un pourrait-il donner un exemple?Utilisation de Apache CXF depuis MATLAB

Répondre

1

createclassfromwsdl a une fonctionnalité vraiment limitée. J'ai donc essayé deux paquets java pour la communication SOAP de Matlab.

  • Apache CXF - il y avait quelques problèmes lors de la compilation et donc j'ai utilisé la seconde alternative:
  • Axis2: cela a fonctionné assez bien de Matlab, je réalisé les étapes suivantes:

1) Installer Axis2 -1.5.4

2) ./wsdl2java.sh -uri http://webservice:port .. -o outfolder -uw

3) Ensuite, je dû fixer les talons générés afin d'éviter des erreurs lors du savon co mmunication (vous pourriez ne pas avoir besoin): - remplacer occurence de SOAP12Constants par SOAP11Constants

4) Copile les sources dans le dossier de sortie en utilisant ant

5) Puis, en Matlab-je utiliser la procédure d'initialisation suivante (en supposant que la package.jar est dans matlabpath et le paquet se trouve dans folder_foo)

if isempty(strfind(javaclasspath,'package.jar')) % check whether the jar package is already in javapath 
r = matlabpath; 
tokens = strtok(r,pathsep); 
found = 0; 
[p, remain] = strtok(r,pathsep); 
while p 
    if not(isempty(regexp(p, 'folder_foo', 'ignorecase'))) 
     javaaddpath([ p filesep 'package.jar']); % add to dynamic java path 
     import eu.package.name; 
     h = StubConstructor(); %instantiate the object 
     found = 1; 
     break; 
    end 
    p = strtok(remain,r); 
end 
if not(found) 
    error('WS client initialization failed') 
end 
end 
Questions connexes