有没有办法强制Axis1生成文档文字WSDL和SOAP?

时间:2010-10-05 05:30:36

标签: java soap wsdl axis

我使用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获得适当的文档文字支持?

1 个答案:

答案 0 :(得分:0)

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