将JAXB生成的类公开为WSDL Web服务

时间:2009-10-12 17:38:30

标签: java web-services wsdl jaxb axis

我有很多非常简单的功能。 每个功能都有一个输入和一个输出。

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,

2 个答案:

答案 0 :(得分:2)

我找到了一个使用CXF来完成您所期待的here的教程。

该文件声称使用合同第一种方法,但并非完全如此。在讨论基于SOAP的服务时,契约首先意味着首先创建描述符(WSDL,XSD)。然后,您可以从这些描述符生成任何代码工件。您可以在原始博文中看到关于原作者选择单词的辩论的评论。

话虽这么说,合同第一种方法有很多好处,取决于你想要完成的事情。有关它的一些信息,请参阅Spring Web Services教程。

答案 1 :(得分:1)

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