Все, я пытаюсь записать тест Junit, который звонит клиенту веб-сервиса в Axis2.1.5, и я запутался о как к точно для установки его для использования Обращения WS.
Я генерировал клиентский тупик, использующий wsdl2java, и я использую axis2.xml и репозиторий модулей от axis2 двоичного распределения.
Я знаю, что должен использовать версию MemberSubmission Обращения WS, и я думаю, что имею, которые настраивают правильно (использующий Опции), но заголовки, кажется, не сгенерированы правильно. (Я говорю, 'кажутся', потому что я не могу выяснить, как к модулю SOAPMonitor, работающему любой - я приветствовал бы любые подсказки относительно этого также!).
Мой основной беспорядок, тем не менее, вокруг того, что точно он берет для 'затрагивания' модуля Обращения. Должно быть достаточно создать мой ConfigurationContext с файлом axis2.xml, который имеет ссылку на модуль обращения? Как это?:
//standard out of the box axis2 configs
ConfigurationContext myConfigContext = ConfigurationContextFactory
.createConfigurationContextFromFileSystem("C:/devapps/axis2-1.5.1/repository","C:/devapps/axis2-1.5.1/conf/axis2.xml");
Options options = new Options();
EndpointReference targetEPR = new EndpointReference(
"https://host:port/service.asmx");
options.setTo(targetEPR);
//I believe this is what I'm supposed to do to specify the
//MemberSubmission version of WS-Addressing
options.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
AddressingConstants.Submission.WSA_NAMESPACE);
//No idea of this is needed or not.
options.setProperty(AddressingConstants.INCLUDE_OPTIONAL_HEADERS,
Boolean.TRUE);
options.activate(myConfigContext);
options.setAction("someAction");
CaseDetailsServiceStub stub = new CaseDetailsServiceStub(
"https://host:port/service.asmx");
stub._getServiceClient().setOptions(options);
//I'm calling this from a Junit test
assertNotNull(stub.someAction(someParam));
С моими опциями, настроенными как вышеупомянутый, видят в файле журнала, что модули становятся загруженными от axis2.xml:
[INFO] Deploying module: addressing-1.5.1 - file:/C:/devapps/axis2-1.5.1/repository/modules/addressing-1.5.1.mar
Но я не думаю, что получаю любые заголовки обращения. Ошибка, которую я возвращаю с сервера в этой точке, говорит:
Заголовок http://schemas.xmlsoap.org/ws/2004/08/addressing:Action для окончательного получателя требуется, но не существующий в сообщении.
Так, я также видел, что некоторая ссылка документов 'затрагивает' модули. Когда я пытаюсь добавить эту строку к своему коду и добавить обращение-1.5.1.mar к моему пути к классу, хотя:
stub._getServiceClient().engageModule("addressing");
Я получаю ошибку, которая говорит:
Не мог затронуть модуль: обращение org.apache.axis2. AxisFault: Не мог затронуть модуль: soapmonitor в org.apache.axis2.client. ServiceClient.engageModule(ServiceClient.java:358)
Никакая другая информация или отслеживание стека в журналах вне, это, тем не менее, таким образом, я смущен.
Какие-либо идеи о том, что я делаю неправильно?
поместите addressign.mar и sopamoniter.mar в библиотеку или путь к классам проекта. у меня это работает найди марку из набора axis2