2010-07-28 4 views
0

Функция createClassFromWsdl в MATLAB имеет некоторые существенные ограничения, например, не поддерживающие атрибуты. Мне кажется, что способность Apache CXF генерировать dynamic clients может быть способом доступа к более широкому спектру конечных точек SOAP относительно удобным для пользователя способом. Просто добавив соответствующие JAR-файлы в ваш путь к MATLAB, вы сможете интерактивно создавать надежных клиентов из командной строки MATLAB. Кто-нибудь пробовал это? Кто-нибудь, пожалуйста, привел пример?Использование Apache CXF из MATLAB

ответ

1

createclassfromwsdl имеет действительно ограниченную функциональность. Поэтому я попробовал два пакета Java для SOAP-связи от Matlab.

  • Apache CXF - были некоторые проблемы во время компиляции, и поэтому я использовал второй вариант:
  • Axis2: это работало достаточно хорошо с Matlab, я выполнил следующие действия:

1) Установить Axis2 -1.5.4

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

3) Тогда я должен был исправить сгенерированные заглушки для того, чтобы избежать некоторых ошибок во время мыла со mmunication (возможно, не понадобится): - заменить вхождение SOAP12Constants на SOAP11Constants

4) copile источников в выходной папке с помощью муравья

5) Тогда в Matlab я использую следующую процедуру инициализации (при условии, что package.jar находится в matlabpath, а пакет находится в папке_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