2012-10-02 50 views
6

如果我需要EJB 3.0支持并想运行Java 7,我需要Java EE吗?还是我可以坚持使用SE?Java 7 SE是否支持EJB?

在过去(很多JDK版本之前),需要JDK的“J2EE”版本来运行EJB。看起来这不再是事实。请指教。

更新:我应该提到应用程序将在Oracle WebLogic 10.3.6内部运行。

+0

您不需要SDK的J2EE版本。没有这样的事情。 JEE是一个规范,有几个供应商像GlassFish 3.x和JBoss 6/7一样实现它。请注意,Tomcat只是一个servlet容器,所以你不能在其中运行EJB。 –

+0

SDK的Java EE版本:http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-6u3-jdk-7u1-downloads-523391.html – BestPractices

+1

阅读BalusC的意见[Confusion关于Java SE和Java EE](http://stackoverflow.com/q/12773152/1065197)来理解这意味着什么。另外,Java SE也是一个规范,有几个供应商实现它,如[Oracle HotSpot](http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html)和[OpenJDK的](http://openjdk.java.net/)。 –

回答

5

EJB是Java EE的一部分。但是,如果您想要的是JPA,即使API包含在Java EE(here's the API documentation)中,您不再需要用于JPA的Java EE应用程序服务器(与EJB实体bean的情况不同)。 JPA可以与Java SE一起使用。

如果你在Weblogic中运行它,那么你可以访问Java EE,所以我不明白这个问题的关键。

+0

虽然没有明确说明,但问题是我是否可以使用Java SE访问EJB库。基于这些答案,选项是使用Java EE SDK和/或使用应用程序服务器附带的库来获得Java EE功能,例如EJB。我已经接受了你的答案,因为这是正确的答案。 – BestPractices

+0

@BestPractices:如果你只是想编译一些东西,你可以把你的weblogic jar放入你的仓库或使用glassfish的罐子。 –

+0

>但是,如果您想要的是JPA,那不再是Java EE的一部分 - 这并非完全正确。 JPA仍然在Java EE规范中。 CMP(Entity Beans,不要与实体混淆)已被弃用,以支持JPA。 JPA最初是作为EJB的一个子规范开始的,但后来转移到了自己的规范中,但仍然在Java EE中提到过。所有这些并不意味着JPA不能在Java EE之外使用,实际上它对Java SE有明确的支持。 –

1

为了运行EJB,需要EJB容器(如Glassfish的),这是不包含在Java SE 7

1

我认为你是错的。 EJB仍然只是Java EE规范的一部分,而不是Java SE。如果您查看Java SE API,则不提及EJB。

5

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

1

可以在非Java EE应用程序服务器中使用EJB和EJB的3.1 Lite容器 - 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,则需要使用应用程序服务器或某些实现者特定的功能。