首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取cxf-codegen-plugin以生成Holder类

获取cxf-codegen-plugin以生成Holder类
EN

Stack Overflow用户
提问于 2015-01-13 01:12:15
回答 1查看 1K关注 0票数 0

我正在升级一个以前使用axisweb-service客户端,现在使用CXF。请注意,web-service属于第三方,因此我自己没有修改wsdl的权限。

代码语言:javascript
复制
<message name="doSomethingRequest">
  <part name="parameters" element="doSomething" />
</message>

<message name="doSomethingResponse">
  <part name="parameters" element="doSomethingResponse" />
</message>

<portType name="myServicePortType">
  <operation name="doSomething">
    <input message="doSomethingRequest" />
    <output message="doSomethingResponse" />
  </operation>
</portType>

正如您所看到的,通过这种方式,messageoperation都记录在WSDL中,当通过cxf-codegen-plugin调用WRAPPED时,会选择wsdl2java的绑定样式,这很好。我的旧*PortType类(通过axistools-maven-plugin / wsdl2java生成)也具有WRAPPED样式的所有方法,并将Holder类作为参数类型,而不是返回类型。

但我的问题是,当我以前使用axistools-maven-plugin生成java类时,我的所有*Holder类也都是自动生成的,以满足*PortType接口需求。但是对于cx-codegen-plugin,只有*PortType接口反映了WRAPPED样式,该样式要求OUT参数使用Holder类型;我没有看到作为wsdl2java的一部分生成的*Holder类!

有没有办法让cxf-codegen-plugin生成*Holder类作为wsdl2java的一部分,而不需要自己编写它们?我不想切换到BARE绑定样式,因为这将意味着大量的重构。我也不能像我之前提到的那样修改WSDL

我使用cxf-codegen-pluginv3.0.2JAXB数据绑定fwiw。

代码语言:javascript
复制
@RequestWrapper(localName = "doSomething", targetNamespace = "...", className = "...DoSomething")
@WebMethod(action = "urn:#doSomething")
@ResponseWrapper(localName = "doSomethingResponse", targetNamespace = "...", className = "...DoSomethingResponse")
public void doSomething(
  @WebParam(name = "requestParam1", targetNamespace = "...")
  java.lang.String requestParam1,
  @WebParam(name = "requestParam2", targetNamespace = "...")
  java.lang.String requestParam2,

  // the below holders for SomeType1 and SomeType2, i.e the SomeType1Holder and SomeType2Holder, are not auto-generated as part of the wsdl2java

  @WebParam(mode = WebParam.Mode.OUT, name = "responseParam1", targetNamespace = "...")
  javax.xml.ws.Holder<SomeType1> responseParam1,
  @WebParam(mode = WebParam.Mode.OUT, name = "responseParam2", targetNamespace = "...")
  javax.xml.ws.Holder<SomeType2> responseParam2
);
EN

回答 1

Stack Overflow用户

发布于 2015-11-04 19:57:33

您不需要生成Holder类;它是JAX-WS的一部分。

您可能希望检查编译器使用的JDK版本。据我所知,JAX-WS包含在Java的版本6中,所以如果您的编译器使用JavaSE5,这可能就是您的问题所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27907281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档