2012-10-02 16 views
6

Si quiero compatibilidad con EJB 3.0 y quiero ejecutar Java 7, ¿necesito Java EE o puedo quedarme con SE?¿Java 7 SE tiene soporte para EJB?

En el pasado (muchas versiones de JDK atrás), se necesitaba la versión "J2EE" del JDK para ejecutar EJB. Parecería que esto ya no es verdad. Por favor avise.

ACTUALIZACIÓN: Debería haber mencionado que la aplicación se ejecutará dentro de Oracle WebLogic 10.3.6.

+0

No necesita una versión J2EE del SDK. No hay tal cosa. JEE es una especificación y hay varios proveedores que la implementan, como GlassFish 3.x y JBoss 6/7. Tenga en cuenta que Tomcat es solo un contenedor de servlets, por lo que no puede ejecutar EJB dentro de él. –

+0

versión Java EE del SDK: http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-6u3-jdk-7u1-downloads-523391.html – BestPractices

+1

Lea los comentarios de BalusC en [Confusion acerca de Java SE y Java EE] (http://stackoverflow.com/q/12773152/1065197) para comprender lo que esto significa. Además, Java SE también es una especificación, hay varios proveedores que la implementan, como [Oracle HotSpot] (http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html) y [OpenJDK] (http://openjdk.java.net/). –

Respuesta

5

EJB es parte de Java EE. Pero si lo que quieres es JPA, aunque la API esté incluida en Java EE (here's the API documentation) ya no necesitas un servidor de aplicaciones Java EE para JPA (a diferencia de la situación con beans de entidad EJB). JPA se puede usar con Java SE.

Si está ejecutando esto en Weblogic, entonces tiene acceso a Java EE, así que no entiendo el sentido de la pregunta.

+0

La pregunta, si bien no se indicó explícitamente, era si tengo acceso a las bibliotecas EJB con Java SE. En función de las respuestas, las opciones son usar Java EE SDK y/o usar las bibliotecas que vienen con el servidor de aplicaciones para obtener la funcionalidad de Java EE como EJB. He aceptado tu respuesta, ya que es el armario a la respuesta correcta. – BestPractices

+0

@BestPractices: si solo quiere compilar algo en una compilación, puede poner su jarra weblogic en su repositorio o usar los frascos glassfish. –

+0

> Pero si lo que quieres es JPA, eso ya no forma parte de Java EE. Esto no es del todo cierto. JPA aún está dentro de la especificación paraguas de Java EE. Lo que cambió es que CMP (Entity Beans, que no debe confundirse con Entities) se desaprobó a favor de JPA. JPA comenzó como una subespecificación de EJB, pero luego se movió a su propia especificación, pero como se menciona aún en Java EE. Sin embargo, todo esto no significa que JPA no se pueda usar fuera de Java EE, de hecho tiene soporte explícito para Java SE. –

1

Con el fin de ejecutar EJB, es necesario un contenedor EJB (como Glassfish), que no se incluye con Java SE 7.

1

Creo que estás equivocado. EJB todavía es parte de la especificación Java EE solamente, no de Java SE. Si mira Java SE API, no hay referencia a EJB.

5

No, esto no ha cambiado. Los EJB son parte de Java EE, no de Java SE. Esto probablemente nunca cambiará ya que el soporte de infraestructura para EJB es enorme (y probablemente no se incluya en Java SE).

1

puede utilizar EJB en un servidor de aplicaciones que no sea Java EE con el contenedor 3.1 Lite de EJB - http://docs.oracle.com/javaee/6/api/javax/ejb/embeddable/EJBContainer.html.
Todos los servidores de aplicaciones compatibles con Java EE 6 deben poder ejecutarse en modo incrustado.

Esto, sin embargo, no es una característica de Java SE 7 (funcionó bien en Java SE 6) sino API de Java EE 6, así que si te apegas a EJB 3.0 de lo que necesitarías usar servidor de aplicaciones o alguna características específicas del implementador.