Jakarta EE Flashcards

J2EE - JEE - Jakarta EE

1
Q

Qué es Jakarta EE

A

Conjunto de especificaciones que extienden Java SE. Lo soporta la Eclipse Foundation.

Objetivo: Crear aplicaciones empresariales, web y multisuario en lenguaje Java

Objetivo Secundario: Dedicate a lo tuyo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Que son los JVM Languages. Ejemplos

A

Lenguajes “java friendly” que se programan en su sintaxis pero se compilan a .class y se ejecutan en le JRE

  • Java
  • Kotlin
  • Scala
  • Groovy
  • Clojure
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Perfiles Jakarta

A
  • Core Profile: lo minimo indispensable
  • Web Profile: todos los componentes para el desarrollo de una aplicación web
  • Full Profile / Jakarta entreprise: todos los componentes de la especificación
  • Microprofile: No pertenece a jakarta pero lo integra (Core Profile). Componentes para realizar aplicaciones con microservicios.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Componentes Jakarta EE: Capa de presentacion

A
  • JSP: html + < % codigo java% > + objetos predefinidos. Código incrustado.
  • JSTL: html + taglib presonalizados. Ej.: < report>. Código separado del fichero html.
  • JSF: tags UI predefinidos. Ej: < database> Etiquetas orientadas solo a clase de presentación sin mezclar negocio.
  • Servlets / Filters: Capa de control
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Componentes Jakarta EE: Capa de Negocio

A
  • API EJB (Enterprise JavaBeans)
    • EJB Sesion (Logica de negocio). Con y sin estado.
    • EJB MDB (Logica de negocio async). Listener, reciben mensajes de una cola
  • Web Services (SOAP y REST).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Componentes Jakarta EE: Servicios definidos App Server

A

Antiguamente nos apoyabamos en frameworks para dar la funcionalidad que faltaba en JEE. Pero las últimas versiones han aumentado los servicios haciendo una especificación mucho más completa.

  • JTA (Servicio de transacciones)
  • JNDI (Servicio de nombres – Arbol de objetos). Objetos que se crean automaticamente y que siempre tenemos disponibles. Ya no se hace new
  • JPA (Servicio de persistencia – ORM)
  • JMS (Servicio de colas de mensajes)
  • JSON-P (Servicio para documentos JSON. bajo nivel) JSON-B (Alto nivel)
  • CDI (Servicio de inyección de dependencias)
  • Jakarta MVC
  • Jakarta NoSQL
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Productos que implementan la especificación Jakarta EE

A
  • JBoss
  • WildFly
  • Payara
  • Weblogic
  • Open Liberty -> sin volverse loco
  • WebSphere Liberty
  • Eclipse GlassFish
  • Apache TomEE
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Servicio JTA

A

Java Transaction Api

Servicio de transacciones distribuidas.

UserTransaction –> begin, commit, rollback

jakarta.transaction.UserTransaction

TP: Transaction Processor. Tiene la inteligencia para mantener la transacción en entornos distintos. Ej.: se hace una operación que guarda parte en Oracle y parte en DB2, pero necesitamos asegurar que la información estará en las dos BBDD o en ninguna, en este caso el que gestiona que se mantenga esa consistencia es el TP.

import javax.transaction.*;

public class JtaExample {
    public static void main(String[] args) {
        try {
            // Get the UserTransaction object
            UserTransaction utx =  (UserTransaction)  new InitialContext().lookup("java:comp/UserTransaction");

            // Begin the transaction
            utx.begin();

            // Perform some transactional operations
            // For example, update data in a database
            // ...
            // ...

            // Commit the transaction
            utx.commit();

            System.out.println("Transaction committed successfully.");
        } catch (Exception e) {
            // Handle exception and rollback the transaction if necessary
            e.printStackTrace();
            try {
                utx.rollback();
                System.out.println("Transaction rolled back.");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Servicio JNDI

A

Java Naming and Directory Interface

Servicio de directorio.

InitialContext (método lookup(String))

javax.naming.InitialContext

import javax.transaction.*;

public class JtaExample {
    public static void main(String[] args) {
        try {
            // Get the UserTransaction object
						
	   /*********************/
            UserTransaction utx =  (UserTransaction)  new InitialContext().lookup("java:comp/UserTransaction");
            /*********************/
						
            // Begin the transaction
            utx.begin();

            // Perform some transactional operations
            // For example, update data in a database
            // ...
            // ...

            // Commit the transaction
            utx.commit();

            System.out.println("Transaction committed successfully.");
        } catch (Exception e) {
            // Handle exception and rollback the transaction if necessary
            e.printStackTrace();
            try {
                utx.rollback();
                System.out.println("Transaction rolled back.");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Servicio JDBC

A

Java DataBase Connectivity

Servicio de persistencia de bajo nivel

Driver / DataSource
Connection
Statement / PreparedStatement / CallableStatement
ResultSet

java.sql.Driver.
Connection
Statement
PreparedStatement
CallableStatement
ResultSet

javax.sql.dataSource

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Servicio JMS

A

Java Message Service

Servicio de mensajería (colas)

COLA: Relacion 1:1, un emisor y un receptor
TOPIC: Relacion 1:N, un emisor, n receptores

MessageListener (onMessage(Message))
Queue / Topic
Session (createProducer(Destination),createMessage())

** jakarta.jms**

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Servicio JPA IMPORTANTE

A

Java Persistent API

Servicio de persistencia de alto nivel (ORM - Object Relational Mapping)

EntityManager (métodos persist(), find(), delete())
@Entity / @Table / @Id / @Column / @OneToMany / @OneToOne / @ManyToMany

** jakarta.persistence.EntityManager**

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Servicio JAX-WS

A

Java API for XML Web Services

Web Services SOAP

@WebService / @WebMethod / @WebParam

jakarta.xml.ws
javax.jws

package ee.jakarta.tutorial.helloservice;

import jakarta.jws.WebService;
import jakarta.jws.WebMethod;

@WebService
public class Hello {
    private final String message = "Hello, ";

    public Hello() {
    }

    @WebMethod
    public String sayHello(String name) {
        return message + name + ".";
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Servicio JAX-RS

A

Java API for RESTful Web Services

Web Services REST

@Path / @GET / @POST

** jakarta.ws.rs**

@Path("/hello")
public class HelloResource {

   @GET
   public String sayHello() {
      return "Hello World";
   }

@POST
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_JSON)
public String handlePersonRequest(Person person) {
   return person.toString();
}

}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Servicio CDI

A

Contexts and Dependency Injection

Inyeccion de dependencias

@Inject / @RequestScoped / @Named

** jakarta.enterprise.context**

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Ciclo de vida de un Servlet

A

Ojo!!! el servlet es un interfaz genérico, no asociado en exclusiva a peticiones http. Su ciclo de vida son estos tres métodos:

  • init(config)
  • service(req, res)
  • destroy()
17
Q

Métodos HttpServlet

A
18
Q

Métodos HttpServletRequest

A
19
Q

Métodos HttpServletResponse

A
20
Q

Flujo de aplicación web

A
  • req, res –> se crean continuamente por cada petición (junto con su Thread correspondiente)
  • HttpSesión –> se crea por cada usuario conectado (cookie JSESSIONID)
  • Servlet / Filter –> se crea un objeto de cada clase al inicio de la app
  • ServletContext –> se crea un objeto global compartido por todos los servlets
  • Pool de threads (hilos) –> No se crean hilos por cada petición, sino que existe un pool y se van usando. Cuando ya no quedan libre la petición quedara en espera (wait)
21
Q

Empaquetado de una app Jakarta EE

A
  • Parte Web: .war (web container: servlet, filtros, jsp, jspf)
  • Parte EJB: .jar (EJB container)
    *Empaquetado completo war + jar: .ear
22
Q

web.xml

A

Fichero de configuración de los .war

<web-app>
	<filter>
		<filter-name> SecurityFilter </filter-name>
		<filter-class>com.jee.filter.SecurityFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

<!-- Se aplica el filtro a todo el mundo-->
	<filter-mapping>
		<filter-name> SecurityFilter </filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

<!-- Indicamos la url y la clase que lo va a tratar-->
	<servlet>
		<servlet-name>AltaEmpleadoServlet</servlet-name>
		<servlet-class>com.jee.servlet.AltaEmpleadoServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name> AltaEmpleadoServlet </servlet-name>
		<url-pattern>/altaEmpleado</url-pattern>
	</servlet-mapping>

<!-- Reglas de seguridad simple por perfil de usuario-->
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>admin</web-resource-name>
			<url-pattern>/admin/*</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>ADMIN</role-name>
		</auth-constraint>
		<user-data-constraint>
			<transport-guarantee>NONE</transport-guarantee>
		</user-data-constraint>
	</security-constraint>
	<login-config>
		<auth-method>FORM</auth-method>
		<form-login-config>
			<form-login-page>/logon.jsp</form-login-page>
		</form-login-config>
	</login-config>
	<error-page>
		<error-code>500</error-code>
		<location>/errors/servererror.jsp</location>
	</error-page>
	<session-config>
		<session-timeout>-1</session-timeout>
	</session-config>
</web-app>
23
Q

Cómo se compone un .war

A
  • html/css/jsp (componentes estáticos)
  • Directorio WEB-INF:
    • classes*.class
    • lib*.jar (librerías de terceros)
    • web.xml (mapeado de url a las clases java)
24
Q

ejb-jar.xml

A

Fichero de configuración de los .jar de EJB’s

<ejb-jar>
	<session>
		<session-type>Stateless</session-type>
		<transaction-type>Container</transaction-type>
		<ejb-class></ejb-class>
	</session>
</ejb-jar>
25
Q

Cómo se compone un .jar de ejb

A
  • Directorio META-INF\ejb-jar.xml
    • *.class
26
Q

application.xml

A

Ficerho de configuracion de los .ear

<module>
       <web>
             <web-uri> admin.war </web-uri>
             <context-root>administracion</context-root>
        </web>
        <ejb>
            calculos.jar
         </ejb>
….
27
Q

Cómo se compone un .ear

A
  • application.xml
  • .war
  • .jar (ejb’s)
28
Q

Métodos principales del EntityManager (JPA)

A

jakarta.persistence

  • persist(obj) –> almacenar nuevas entidades en la BBDD
  • contains(obj) –> comprueba si una entidad está “manejada” por el EM
  • find(pk) –> localizar una entidad a través de un clave primaria
  • flush() –> provoca que los cambios pendientes del EM se sincronicen en la BBDD
  • merge(obj) –> convierte una entidad “no manejada” por el EM en “manejada”
  • remove(ojb) –> eliminar una entidad de la BBDD

Ej.:

@Inject
EntityManager em;

//Creal el SQL, lo lanza contra la BBDD y crea el obj 
//factura 'f' con el resultado
Factura f = em.find("1234");
29
Q

Anotaciones de una entidad (JPA)

A

jakarta.persistence

  • @Entity –> identifica a la clase como una “entidad”
  • @Id –> Clave primaria
  • @Table –> Para elegir la tabla donde guardar el objeto
  • @Column –> Para elegir la columna donde guardar un atributo
  • @OneToMany –> Para especificar relaciones 1:N con otras clases
  • @Transient –> Indica que ese atributo no hay que guardarlo
  • @NamedQuery –> Para especificar consultas JPQL con nombre
  • @Query(value=”código SQL”, nativeQuery=true) Código SQL a pincho

Ej.:

@Entity
@Table("FACT")
public class Factura{
    @id  //Identificador de la tabla
    String id;
    
    @Column("FECHA_FACT") //Columna en BBDD que corresponde
     Date fechaFactura
}
30
Q

@OneToMany / @OneToOne

A

NOTA: Las relaciones @OneToOne, @OneToMany son por defecto de tipo FetchType.LAZY, quiere decir, que no se van a cargar esos objetos relacionados hasta que no haga falta. Fetch.LAZY / Fetch.EAGER

/**
 * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="EAGER")
 */

/**
 * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="LAZY")
 */

Ej.:

@Entity
@Table("PAG")
public class Pagos{ .... }
....

@Entity
@Table("FACT")
public class Factura{
    @id  //Identificador de la tabla
    String id;
    
    @Column("FECHA_FACT") //Columna en BBDD que corresponde
     Date fechaFactura

     //Obtenemos todos los pagos de la facutura cuando 
     //pidamos la 'factura
     @OneToMany
     List<Pagos> pagos;
}
31
Q

Providers JPA

A
  • Hibernate
  • EclipseLink
  • DataNucleus
  • OpenJPA
32
Q

Estructura de la arquitectura JPA

A
33
Q

En nuestra aplicación Java, ¿qué paquetes usaríamos para establecer la conexión a la base de datos de NOTIFICACION?

a) java.database

b) javax.naming y javax.sql

c) javax.io y javax.serviet

d) javax.serviet

A

b) javax.naming y javax.sql

34
Q

Se quiere desarrollar un microservicio para que el personal funcionario pueda consultar el estado de una notificación enviada. ¿Qué especificación de la comunidad, alineada con Jakarta EE Core Profile, es la indicada para desarrollarlo?

a) Jakarta Authentication

b) Jakarta Batch

c) Microprofile

d) Jakarta Connectors

A

c) Microprofile

35
Q

En JAVA podemos utilizar el interface PreparedStatement para:

a) Inicializar las variables locales del programa con valores preestablecidos.

b) Preparar los valores que introduciremos en un archivo de texto externo al programa.

c) Permitir ejecutar muchas veces una sentencia SQL.

d) Administrar el consumo de memoria que utilizan los objetos creados.

A

c) Permitir ejecutar muchas veces una sentencia SQL.

36
Q

En el contexto de Java EE (ahora Jakarta EE), ¿en qué paquete se encuentran las clases e interfaces de Enterprise JavaBeans?

a) java.ejb2

b) javax.ejb

c) javax.persistence.ejb

d) java.transaction.ejb

A

b) javax.ejb

jakarta.ejb

37
Q

Spring Boot es:

a) Una plataforma de desarrollo móvil basada en Javascript que permite desarrollo de apps muliplataforma.

b) Una plataforma que permite el desarrollo de aplicaciones web “autocontenidas” que llevan embebido el contenedor de serviets.

c) Una plataforma que permite, entre otras cosas, la conexión lógica entre bases de datos relacionales clásicas y bases de datos NOSQL.

d) Una plataforma que permite automatizar las pruebas de software para aplicaciones con lenguaje de programación JAVA.

A

b) Una plataforma que permite el desarrollo de aplicaciones web “autocontenidas” que llevan embebido el contenedor de serviets.

38
Q

¿Cuál de los siguientes NO es un ORM (Mapeador Objeto-Relacional)?

a) ADO.NET Entity Framework

b) Ruby Hibernation

c) NHibernate

d) Hibemate

A

b) Ruby Hibernation

39
Q

Para la construcción de servicios web en Java podría usar la API Java denominada:

a) JPA

b) Java DOM

c) SOAP

d) JAX-WS

A

d) JAX-WS