【问题标题】:JAX-WS generate a WS client with protected or private constructorJAX-WS 使用受保护或私有构造函数生成 WS 客户端
【发布时间】:2013-01-14 18:29:30
【问题描述】:

我正在使用 JAX-WS 为一些 web 服务生成我的 jar 客户端。

有人知道是否可以使用带有受保护或私有构造函数的 jax-ws 生成 Web 服务客户端?

我正在使用带有 cxf-codegen-plugin 的 maven 来生成类 =)

【问题讨论】:

  • 好奇:你为什么要这么做?
  • 作为 Web 服务客户端的类可以有一个私有/受保护的构造函数,因为它可以在它自己的方法中调用 Web 方法。您的具体问题/场景是什么?你试过什么?
  • 我创建了一个工厂来服务所有 Web 服务,因为我需要注入所有用户凭据。因此,如果程序员使用默认构造函数创建 ws 实例,他将收到异常,因为请求标头中没有凭据。我想提供一种独特的方式来使用我的网络服务......只有我的工厂。
  • 一个有效的附加评论:我使用 maven 来生成我的 Web 服务客户端。自动... 这个插件使用默认的java方法来生成调用wsimport。我需要找到一个参数传递给命令行来执行此操作。

标签: java web-services jax-ws wsimport


【解决方案1】:

一个选项是......不要编译它:)。通过使用-s <dir> -keep -Xnocompile 选项的某种组合,让wsimport 生成源文件而不进行编译。然后,您可以在编译之前删除生成的服务类。如果您需要利用服务类中的嵌入信息,可以使用注解处理从WebServiceClient 注解中提取服务名称、命名空间和WSDL 位置。您还需要使用Service.create() 方法之一替换服务类构造函数的任何用法。

编辑:我的错 - 我完全错过了您正在使用 CXF 工具(wsdl2java?)。我以前没有使用过它们,但如果它们不提供类似的功能,我会感到惊讶,所以一般方法应该仍然有效......

【讨论】:

  • 好吧。我想我需要使用“man -really wsimport”而不是“man wsimport”命令来查看其余标志的文档....在这里看到 -Xnocompile 非常有用。我想知道还有多少其他秘密选项。我想我可能需要查看 Apache 的源代码才能找到答案。
猜你喜欢
  • 2012-05-12
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多