在JBoss上实现Webservice,使用Maven和选择

3
我要在Java 6上运行的JBoss5中实现一个webservice。根据 JBoss文档,选择是使用JBoss本地实现、CXF或metro。由于本地实现不需要任何额外的库(CXF将引入Spring?),所以我认为这应该是第一选择。
WS合同在WSDL中给出,因此我想从中生成存根。但是JBoss工具对WSDL进行了警告,而CXF wsdl2java则愉快地生成了源代码。我可以使用这些源码而不依赖于CXF,而是使用本地JBoss WS堆栈吗?生成的类中的注释甚至指向javax的东西(这可能是第4个选择,因为我可以创建一个没有附加依赖项的Java 6 WS?)
如何配置webservice?我仍然需要web.xml来定义一些servlet吗?我需要哪些maven依赖项?
抱歉提出这些看似愚蠢的问题,但我已经进行了大量搜索和阅读,但是我读得越多,就越感到困惑。JBoss文档要么全都是关于Java Bean和注释以及/或Ant的,公共JBoss Maven仓库一片混乱(一些WS内容在JBoss下,其他在org.jboss.jbossws下,甚至其他构件在org.jboss.ws下...)。任何有关如何操作和/或文档的指针都非常欢迎。

虽然您不是EAP,但这份文档仍然可能会有所帮助。http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/index.html - technoSpino
1个回答

3
我建议使用CXF,运行一个自包含的war包,并将jboss视为servlet容器,完全忽略jboss尝试提供的所有web服务。然后,您只需按照常规的CXF指南进行wsdl first服务,并最终获得一个漂亮干净的可移植.war文件。它将/应该在jboss中运行(jboss可能会尝试提供一些额外的库,但您应该能够设置某种类加载器限制策略,以确保它首先从上下文加载,而不是从jboss加载)。这样做可以带来以下好处:1.漂亮干净的wsdl first开发;2.只需遵循一个简单的指南(只需使用CXF);3.有意义的maven仓库;4.仍然使用jboss,因为有人认为这是个好主意。
使用Java 6标准web服务也是一种选择,这取决于您的应用程序中还要使用什么。我已经打算使用spring,而CXF的spring集成比jaxws-commons spring部分更整洁、维护得更好。此外,如果您选择使用原始的jaxws-ri,则生成wsdl的maven工具更加复杂,维护性更差。

感谢您的回答。不知何故,我忘记了那个问题。在写作时,我真的很烦恼,因为在 JBoss 中设置这样一个相当简单的任务是如此困难。很高兴听到其他人也分享我的对 JBoss 的看法 ;) 我们使用 XCF 解决了这个问题(正如您建议的),但我的同事选择了 XCF-JBoss 堆栈。谢谢您的回答。 - bert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接