Java 7 SE是否支持EJB?

7
如果我想要EJB 3.0支持并且想要运行Java 7,我需要Java EE还是可以继续使用SE?
在过去(许多JDK版本以前),运行EJB需要使用JDK的“J2EE”版本。现在看来这已经不再是必须的了。请给予建议。
更新:我应该提到该应用程序将在Oracle WebLogic 10.3.6中运行。

您不需要J2EE版本的SDK。这样的东西不存在。JEE是一个规范,有几个供应商实现了它,例如GlassFish 3.x和JBoss 6/7。请注意,Tomcat只是一个Servlet容器,因此您无法在其中运行EJB。 - Luiggi Mendoza
Java EE版本的SDK:http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-6u3-jdk-7u1-downloads-523391.html - BestPractices
1
阅读BalusC在Java SE和Java EE的混淆中的评论,以了解这意味着什么。此外,Java SE也是一个规范,有几个供应商实现它,例如Oracle HotSpotOpenJDK - Luiggi Mendoza
5个回答

5
不,这个没有改变。EJB是Java EE的一部分,而不是Java SE。这可能永远不会改变,因为EJB的基础设施支持非常巨大(并且不太可能包含在Java SE中)。

5
EJB是Java EE的一部分。但如果你想要的是JPA,虽然API已经包含在Java EE中(这里是API文档),但现在你不再需要一个Java EE应用服务器来使用JPA了(与EJB实体bean的情况不同)。JPA可以与Java SE一起使用。
如果你正在Weblogic中运行这个程序,那么你可以访问Java EE,所以我不明白这个问题的意义在哪里。

虽然没有明确说明,但问题是关于我是否可以使用Java SE访问EJB库。根据答案,选项是使用Java EE SDK和/或使用应用服务器附带的库来获得Java EE功能,例如EJB。我已接受您的答案,因为它是最接近正确答案的。 - BestPractices
@最佳实践:如果您只想在构建中编译某些内容,可以将您的Weblogic jar放入存储库中或使用Glassfish的jar。 - Nathan Hughes
但如果你想要的是JPA,那么它不再是Java EE的一部分 - 这并不完全正确。JPA仍然在Java EE的伞形规范内。改变的是CMP(实体Bean,不要与实体混淆)被弃用,转而使用JPA。JPA最初是EJB的子规范,但后来被移动到自己的规范中,但如上所述仍在Java EE中。所有这些并不意味着JPA不能在Java EE之外使用,事实上它明确支持Java SE。 - Arjan Tijms
@Arjan:很好的澄清,情况相当令人困惑。 - Nathan Hughes

1

您可以使用EJB的3.1 Lite容器在非Java EE应用服务器中使用EJB - http://docs.oracle.com/javaee/6/api/javax/ejb/embeddable/EJBContainer.html
所有符合Java EE 6标准的应用服务器都必须能够以嵌入式模式运行。

然而,这不是Java SE 7的功能(在Java SE 6中可以正常工作),而是Java EE 6 API,因此如果您坚持使用EJB 3.0,则需要使用应用服务器或某些实现特定的功能。


1

为了运行EJB,您需要一个EJB容器(例如Glassfish),它不包含在Java SE 7中。


1

我认为你错了。EJB仍然只是Java EE规范的一部分,而不是Java SE。如果你查看Java SE API,就会发现没有提到EJB。


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