【问题标题】:expose JAXB generated Class as WSDL web service将 JAXB 生成的类公开为 WSDL Web 服务
【发布时间】:2009-10-12 17:38:30
【问题描述】:

我有一堆非常简单的函数。 每个函数都有一个输入和一个输出。

OutputType function func(InputType);

输入/输出的类型在 xsd 模式中定义,并使用 JAXB/XJC 生成到 java 类中。现在我想将这些功能公开为在 Geronimo 上运行的 WSDL Web 服务。

我刚刚看了 Axis/WSDL2Java/Java2WSDL;我认为这与创建函数的方式非常相似。

我想,我可以使用 Java2WSDL 从我的函数和输入/输出类型生成 WSDL。 然后使用一些工具生成服务器/客户端绑定,

谁能提供更多进一步的建议?特别是我在 xsd 模式中定义了函数的输入/输出。

非常感谢。

总结:


这些是我现在所拥有的......

许多实现了一个输入和一个输出的功能。

public OutputType functionXXX(InputType in) { ....;返回输出; }

InputType 和 OutputType 已经在 xsd 模式中定义(并使用 Jaxb/xjc 转换为 java 类)。


我想要的是……

构建 Web 服务来执行这些功能。 不要触摸已实现功能的代码。 而使用 WSDL,

【问题讨论】:

  • 一些例子或教程会很棒:)

标签: java web-services wsdl jaxb axis


【解决方案1】:

我找到了一个使用 CXF 的教程来做你想做的事情 here。

该文档声称使用的是合同优先方法,但事实并非如此。在讨论基于 SOAP 的服务时,契约优先意味着首先创建描述符(WSDL、XSD)。然后,您可以从这些描述符生成任何代码工件。关于原作者用词的争论,大家可以看原博文中的cmets。

话虽如此,合同优先的方法有很多好处,具体取决于您要完成的工作。有关它的一些信息,请参阅 Spring Web Services 教程。

【讨论】:

  • 现在的情况是我们已经实现了很多业务逻辑功能,它们并没有作为Web服务运行,我们准备做一个“接口”来公开它们。合同优先的方法可能不适合这种情况。我对吗?我不想触摸或更改那些已实现的代码,甚至添加一些注释。谢谢你的回答,我去看看CXF。
【解决方案2】:

如果您有一个现有的模式,并为其现有 JAXB2 绑定,那么根据我的经验,Spring WebServices 是迄今为止将其公开为 SOAP Web 服务的最简单方法。它的理念是“合同第一”,这正是你所拥有的。您不需要生成任何额外的绑定,只需使用 Spring MVC 连接端点,插入编组器,然后就可以了。它会自省你的模式,寻找看起来像操作的东西,并自动将它们公开为 WSDL 操作(如果默认的自动发现不能正常工作,你可以告诉它如何做到这一点)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多