我对如何创建Java EE应用程序感到困惑。我不确定这些条款,但是我想说我想将通常的java应用程序转换为OSGi(war文件)
我可以使用GlassFish" Hybrid捆绑"它们是Glassfish特有的吗?如果我理解正确,那么Java EE服务就是以OSGi服务的形式提供的。
我可以在普通的Apache Felix中使用为与Glassfish一起使用而编写的WAB吗? Glass Arish EE OSGi服务是Apache Aries提供的吗?所以我可以使用Apache Aries在Glassfish或Felix中运行吗?
我对兼容性很感兴趣。为Glassfish编写的包也会在Jboss OSGi中运行吗? WAB是OSCi的常见概念吗?
答案 0 :(得分:2)
OSGi Enterprise specification定义了Java EE和OSGi之间的某种级别的互操作性。
这种关系有点片面。 Java EE没有正式识别OSGi,而OSGi EE直接引用Java EE保护伞下的许多单独规范(例如JPA,JDBC,JTA,Servlet,JNDI)。
不幸的是,那些扩展给定Java EE规范的OSGi规范通常不包括最新的EE版本,或者它们会施加一些额外的限制。
许多重要的EE规范根本没有OSGi对应物(如CDI,JAX-RS,JAX-WS,JMS,Bean Validation,JCA)。
您可以在Apache Aries,Eclipse Gemini和OPS4J中找到OSGi Enterprise规范的(子集)实现。其中一些项目提供了OSGi EE规范未涵盖的其他功能。
支持OSGi的Java EE服务器(如GlassFish 3/4和JBoss AS 7.0 / 7.1)确实有自己的方式,不一定符合OSGi Enterprise规范,很可能无法互操作。