如何使用CXF更改WebService的名称?

时间:2013-11-27 14:53:37

标签: java wsdl cxf

我们有一个WebService,我们称之为CarLoans,它是由cxf基于WSDL文件生成的。使用来自外部依赖项的maven-resources-plugin检索WSDL。 cxf-codegen-plugin有一个绑定文件,我们用它来为各种其他元素添加前缀,例如请求和响应对象到WebService。假设我们希望请求和响应对象以WS和CarLoans为前缀的EndPoint作为前缀。我们如何使用bindings.xml文件配置它?生成的java代码看起来应该大致如此(不包括不相关的注释等):

@WebService(targetNamespace="http://url.com/", name="CarLoansPortType")
public interface CarLoansPortType {
  public WSCarLoansResponse getCarLoans(@WebParam(name = "request") WSCarLoansRequest request)
}

2 个答案:

答案 0 :(得分:1)

我在apache邮件档案中找到了一个有趣的链接 - http://mail-archives.apache.org/mod_mbox/cxf-users/201202.mbox/%3CCAMHV5gYe8VQDoBfKdEP9nrg-VXy9FnA9BL_4oqpE_zKC2=-x3w@mail.gmail.com%3E

相关代码粘贴在下面:

<jaxws:bindings 
  xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='CREATE_RECIPE']">
      <jaxws:class name="CreateRecipeSEI"/>
  </jaxws:bindings>
</jaxws:bindings>

所以基本上它应该相当容易。我在使用XPATH表达式时遇到了一些局部问题,但这绝对是我们想要的。

答案 1 :(得分:0)

我不建议这样做。

您正在使用的是'Contract First'方法,其中Web服务及其数据类型在WSDL文件中定义。然后使用工具以给定的编程语言生成适当的代码。

但是,如果您是相关WSDL的作者,则需要在WSDL中修改数据类型的名称。在<types>元素下查找数据类型定义。 WSDL很复杂,只有当你知道自己在做什么时才应该修改它们。