Есть ли способ заставить Axis1 создавать документальные WSDL и SOAP? - PullRequest
2 голосов
/ 05 октября 2010

Я использую Apache Axis 1 для обслуживания веб-сервисов, которые автоматически преобразуют объекты Java в определения wsdl и мыльные ответы.Однако кажется, что по умолчанию Axis обслуживает данные, закодированные в rpc.Есть ли способ заставить его обслуживать литеральные данные упакованного документа вместо этого?

До сих пор документация мне не сильно помогла.Мое объявление службы выглядит так:

<service name="myservice" provider="java:RPC" use="literal" style="wrapped">

  <parameter name="wsdlTargetNamespace" value="http://www.acme.com/"/>
  <parameter name="className" value="com.acme.MyService" />

  <operation name="doSomething" returnQName="acme:Response">
    <documentation>Does something.</documentation>
    <fault name="MyException" type="acme:MyException" class="com.acme.MyException" />
  </operation>
</service>

Очевидно, мне нужно объявить ошибку, чтобы исключения работали почти должным образом.(См. этот пост о работе с пользовательскими исключениями.)

Однако, это все равно не работает и даст мне исключение как есть.Я обнаружил, что мне нужно добавить этот статический метод к каждому из моих объектов:

public static void registerTypeMapping(Call call) {
  final String WSDL_TARGET_NAMESPACE = "http://www.acme.com/";
  final QName QNAME = new QName(WSDL_TARGET_NAMESPACE);
  call.registerTypeMapping(Reponse.class, QNAME, 
      new BeanSerializerFactory(Response.class, QNAME), 
      new BeanDeserializerFactory(Response.class, QNAME));
}

Это исключает исключения, что не очень хорошая вещь, потому что теперь ничего не происходит.Я не получаю никаких ответов XML от моего сервиса после внесения этих изменений.Кроме того, даже если это сработало, было бы ужасно добавлять странные статические методы ко всем моим объектам.

Я что-то упустил?Что мне действительно нужно сделать, чтобы получить правильную поддержку литералов в завернутых документах из Axis 1?

1 Ответ

0 голосов
/ 05 октября 2010

Вот соответствующая часть из документации Axis 1.x , которая может оказаться полезной:
Сервисные стили - RPC, Документ, Обернутый и Сообщение

...