Как я использую Обращение WS правильно в клиенте Axis2?

Все, я пытаюсь записать тест 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)

Никакая другая информация или отслеживание стека в журналах вне, это, тем не менее, таким образом, я смущен.

Какие-либо идеи о том, что я делаю неправильно?

8
задан elduff 26 March 2010 в 19:13
поделиться

1 ответ

поместите addressign.mar и sopamoniter.mar в библиотеку или путь к классам проекта. у меня это работает найди марку из набора axis2

7
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: