【问题标题】:Is there a way to coerce Axis1 to produce document literal WSDLs and SOAP?有没有办法强制 Axis1 生成文档文字 WSDL 和 SOAP?
【发布时间】:2010-10-05 05:30:35
【问题描述】:

我使用 Apache Axis 1 来提供 Web 服务,它会自动将 Java 对象转换为 wsdl 定义和 soap 响应。但是,默认情况下,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>

显然我需要声明错误以使异常几乎正常工作。 (有关自定义异常的处理,请参阅this 帖子。)

但是,这仍然不起作用,并且会按原样给我一个例外。我发现我需要将这个静态方法添加到我的每个对象中:

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 中获得正确的包装文档文字支持?

【问题讨论】:

    标签: java soap wsdl axis


    【解决方案1】:

    以下是 Axis 1.x 文档中可能有用的相关部分:
    Service Styles - RPC, Document, Wrapped, and Message

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-21
      • 2023-04-08
      • 2011-10-25
      • 2013-02-03
      • 2020-06-12
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多