在j2ee项目中,我们使用wildfly来部署项目。我们在外部服务器上运行hadoop。我们要连接此服务器并读取hdfs数据。但问题是,我们使用的任何hadoop库(hadoop common、hadoop hdfs、hadoop client)都需要jersey,而wildfly使用resteasy。由于这种冲突,wildfly无法成功部署。
我的问题是,
是否有任何hadoop库,它不依赖于jersey,我们可以用于此操作,或者,
我们需要用球衣来代替wildfly上的resteasy吗。如果这是解决办法,我们怎么能做到。我们找不到此解决方案的源。
谢谢你的帮助。
1条答案
按热度按时间xdyibdwo1#
好的,我在WildFly9.0.1中得到了2.7.1版的基本HadoopHDFS内容。详情请参见我的博客:http://rick-rainer-ludwig.com/2015/09/01/hadoop-client-in-wildfly-a-difficult-marriage
基本步骤是:
关闭隐式bean存档支持,如果包含cdibean,则强制所有jar文件包含meta-inf/beans.xml。一些hadoop客户机依赖项包含@inject,这使得wildfly在部署期间失败
为jersey server和jersey json添加其他依赖项,使项目进入可编译状态。hadoop客户机依赖项不是自包含的。因此,需要额外的依赖项来添加一些缺少的类。
排除hadoop mapreduce client app和hadoop mapreduce client jobclient,因为它们试图提供由于wildfly中缺少依赖项而无法启动的服务。不知道,它们是用来做什么的,为什么 Package 在那里。
如果您依赖jackson2,则需要将整个hadoop客户机打包到自己的ear中,因为hadoop客户机通过打包的提供者强制jackson1。ear需要为代理提供一个定义良好的接口,比如rest服务或带有远程接口的ejb。