如何将EAR应用程序转换为一个大的OSGI包并将其部署在Equinox容器中?

时间:2018-04-12 11:02:53

标签: websphere osgi osgi-bundle

作为成本削减的一部分,管理层希望停止在开发人员系统中使用websphere应用程序服务器。

我有权将EAR文件转换为一个胖的OSGI包并将其部署在equinox容器中。如果成功,此设置将在开发人员之间共享,并且仅用于开发人员计算机,而不是用于更高级的环境。

我搜索了很多网站,但没有找到任何具体的解决方案。 如果有任何问题,请分享您的想法以解决问题。

2 个答案:

答案 0 :(得分:1)

我强烈建议您查看Open Liberty:https://openliberty.io

Open Liberty是IBM去年在Java One上推出的一个开源项目。该项目的目标很简单:将令人敬畏的Java EE技术交给开发人员。

Open Liberty支持Java EE 7和MicroProfile以及其他技术。

除非您有足够的技术理由将EAR转换为OSGi包,否则您可以在开发环境中使用Open Liberty。安装很简单:

for (var i = 0; i < this.rooms.length; i++){ for (var j = 0; j < this.rooms[i].players; j++){ io.sockets.connected[this.rooms[i].players[j].socketid].emit('updateGame', this.rooms[i]); } }

试一试。我想你会感到惊喜。

如果您有任何疑问,Open Liberty有一个非常活跃的社区和Twitter,或者在twitter @barecode上打我。

答案 1 :(得分:0)

EAR文件只是一个包含嵌套JAR文件的JAR文件。那些嵌套的JAR构成了应用程序的类路径。

转换为OSGi包应该像为包含列出所包含JAR的标题META-INF/MANIFEST.MF标题的顶级JAR编写Bundle-ClassPath一样简单,例如:

Bundle-ClassPath: a.jar, b.jar, c.jar, ...

如果EAR文件也直接包含属于应用程序类路径的类,那么新的bundle的JAR文件应作为名为&#39;的条目添加到Bundle-ClassPath前面。&# 39; (点),例如:

Bundle-ClassPath: ., a.jar, b.jar, c.jar, ...

请注意,清单还需要包含必需的OSGi标头Bundle-Manifest: 2Bundle-SymbolicName: ...。网上有很多关于此的信息。