gpt4 book ai didi

java - 公开 WCF 服务以便可以从 Java/CXF 轻松使用它的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:08 32 4
gpt4 key购买 nike

我们编写了一个 WCF 服务供 Java 商店使用,该商店使用 CXF 生成适配器。我们对 Java 不是很熟悉,但是已经公开了使用 basicHttpBinding、SSL 和基本身份验证的服务。集成测试表明 .NET 客户端可以很好地使用该服务。但是,Java 商店在使用该服务时遇到了问题。具体来说,他们收到以下 JAXB 错误:两个声明导致 ObjectFactory 类发生冲突。当 CXF 尝试创建适配器类时,如果 2 个操作具有相同的名称和命名空间,通常会导致这种情况。

我们找不到任何类型或操作名称会导致任何类型的冲突。我们已确保所有自定义类型都指定一个命名空间,并且没有在 WSDL 中的任何地方指定 tempuri.org。 Java 商店怀疑错误是因为生成的 WSDL 包含

那么,我的问题:

  • 对于 Java 商店使用 WCF 服务,有没有比 CXF 更好的方法? Project Tango 看起来很有趣,但我所知道的还不足以让他们考虑使用它。 CXF 是 Java 中事实上的标准吗?
  • BasicHttpBinding/SSL/Basic Auth 是 MS 推荐用于互操作场景的,但客户端似乎仍然存在互操作问题。我们是否应该考虑其他绑定(bind)或设置以使其更易于使用?
  • 有没有一种方法可以将 WCF 配置为始终输出没有模式导入的单个 WDSL?

最佳答案

“两个声明导致 ObjectFactory 类发生冲突”错误消息通常与导入无关。这是一条 JAXB 错误消息,通常是由于具有多个元素或类似元素导致生成的字段名称相同。例如,如果您有以下元素:

<元素名称="Foo".../>和

这可能会导致该错误。另一种是使用连字符和下划线之类的东西,它们通常被消除+封顶:<元素名称="doFoo".../>和

对于 2.1.4,您可以尝试使用 -autoNameResolution 标志运行 wsdl2java。有时会对此有所帮助,但并非总是如此。不幸的是,JAXB 在这些情况下提供的信息几乎毫无值(value),很多时候它只是反复试验才能找到冲突的类型。 :-(

关于java - 公开 WCF 服务以便可以从 Java/CXF 轻松使用它的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578970/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com