Использование Apache CXF из MATLAB - PullRequest
0 голосов
/ 28 июля 2010

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

1 Ответ

1 голос
/ 05 марта 2011

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

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

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

2) ./wsdl2java.sh -uri <a href="http://webservice:port" rel="nofollow">http://webservice:port</a>.. -o outfolder -uw

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

4) скопировать исходники в папке вывода с помощью ant

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