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