b3t6 - JEE Flashcards

1
Q

Qué es JEE?

A

Java Enterpries Edition.

Es la versión empresarial de Java. Consiste en un conjuto de APIs (componentes y servicios)

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

En el mundo java, qué es una JSR

A

Java Specification Request: solicitud formal que plantea una especificación nueva o la modificación de alguna ya existente por el programa Java.

Por ejemplo, JPA 2.2 se corresponde con la JSR-338

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

Qué empresa controlaba Java y JEE hasta 2018?

Y a partir de ese año?

A

Hasta 2018 la controlaba Oracle

Tras 2018 pasa a controlarla la Eclipse Foundation

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

Cómo continúa el desarrollo de JEE, a partir de 2018, bajo la Eclipse Foundation?

A

Con un desarrollo con un flujo de trabajo ágil y abierto llamado JESP (Jakarta EE Specification Process)

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

Qué es JESP

A

(Jakarta EE Specification Process) → Proceso con el que se sigue desarrollando JEE en la Eclipse Foundation

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

Qué versiones hay de JEE en los últimos años y en qué año salieron?

A

JEE 7 → 2013

JEE8 → 2017

Jakarta EE 8 → 2018

Jakarta EE 9 → 2020

Jakarta EE 10 → 2022

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

Qué versiones de Java han salido estos últimos años y en qué año salieron?

A

Java 8 → 2014

Java 11 → 2018

Java 15 → 2020

Java SE 17 (LTS) → 2021

Java 19 → 2022

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

Cómo se convirtieron los paquetes javax. de JEE8 en la versión Jakarta EE 8?

A

No se convirtieron, se mantuvieron con javax.*

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

Cómo se convirtieron los paquetes javax. de Jakarta EE 8 en la versión Jakarta EE 9?

A

Pasaron de javax.* a jakarta.*

Desaparecen los paquetes javax.* y los xml cambian de nombre

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

Qué dos perfiles ofrece Jakarta EE y qué tienen cada uno?

A
  • Web profile: tiene todo lo más básico ahora mismo, por ejemplo
    • REST
    • Seguridad
    • JPA
    • EJB
    • JTA
    • CDI
  • Full profile: además del Web profile tiene lo relacionado con
    • WS Soap
    • Batch
    • JMS (mensajes)
    • Autorización
    • Mail
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Sobre JEE, ¿conceptualmente qué es? ¿qué ofrece?

A
  • Es una capa que corre sobre el JRE en los servidores de aplicaciones
  • Un servidor de aplicaciones tiene que implementar todas las APIs de JEE
  • Define los componentes de tu aplicación
  • Define servicios que ofrece el servidor de aplicaciones
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

El API que ofrece JEE se divide en componentes y servicios del AppServer. ¿En qué dos capas se dividen los componentes? Nombra varios tipos de componentes de cada capa

A
  • Capa de Presentación
    • JSP (JavaServerPages)
    • JSTL (JavaServerTagLibraries)
    • JSF (JavaServerFaces)
    • Servlets
  • Capa Negocio
    • EJB Sesion
    • EJB MDB
    • Web Services (SOAP y REST)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

El API que ofrece JEE se divide en componentes y servicios del AppServer. ¿Qué servicios ofrecerá el AppServer? Nombra varios

A
  • JTA (Servicio de transacciones)
    • JNDI (Servicio de nombres – Arbol de objetos)
    • JPA (Servicio de persistencia – ORM)
    • JMS (Servicio de colas de mensajes)
    • JSON-P (Servicio para documentos JSON)
    • 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
14
Q

Qué son Apache, Apache Tomcat y Apache TomEE?

A

Apache → Servidor web HTTP

Apache Tomcat → Contenedor de servlets

Apache TomEE → Servidor de aplicaciones JEE

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

Nombra algunos productos compatibles con JEE

A
  • Jboss
  • WildFly
  • JRun
  • WebLogic
  • WebSphere Liberty
  • Open Liberty
  • Apache TomEE
  • Payara
  • Eclipse GlassFish
  • Manage Fish
  • Apusic
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qué es JTA? Qué objeto principal usa? Qué dos métodos?

A

Java Transacation Api: Para manejar transacciones distribuidas

Objeto principal → UserTransaction

métodos commit() y rollback()

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

Qué es JNDI? Qué objeto y método principal para buscar recursos tiene?

A

Servicio de directorio, para obtener recursos

Usa el objeto InitialContext y el método lookup(String) para buscar recursos en el árbol

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

Qué es JDBC? Qué objetos maneja?

A

Servicio de persistencia a bajo nivel

Driver / Datasource

Connecton

Statement / PreparedStatement / CallableStatement

Resulset

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

Qué es JMS? Qué objeto y método maneja?

A

Servicio de mensajería (colas de mensajes)

MessageListener (onMessage(Message))

Queue / Topic

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

Qué es JPA?

Qué clase principal usa y qué métodos y etiquetas usa?

A

Servicio de persistencia de alto nivel (ORM)

Usa la clase EntityManager (se crea con una EntityManagerFactory que hay que crear antes)

métodos persist(entidad), contains(entidad), find(PK), remove(entidad)

@Entity / @Table / @Id / @Column / @OneToMany

Se pueden hacer sql de tres tipos

sql nativa, de oracle por ejemplo

o sql JPQL, que puede ponerse directamente o establecerla como una @NamedQuery con una anotacion en la clase del modelo, (donde se especifican además el resto de anotaciones de JPA

createQuery(String qlString, Class<T> resultClass): Crea una consulta JPA utilizando lenguaje de consulta JPQL.
createNamedQuery(String name, Class<T> resultClass): Crea una consulta con nombre previamente definida en la entidad.
createNativeQuery(String sqlString, Class<T> resultClass): Crea una consulta nativa de SQL.</T></T></T>

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

Qué es JAX-WS?

Qué anotaciones usa?

A

Para webservices SOAP

@WebService / @WebMethod / @WebParam

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

Qué es JAX-RS? Qué métodos usa?

A

Para web services REST

@Path / @GET / @POST

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

Qué es CDI? Qué métodos usa?

A

Inyección de dependencias, como framework Spring

@Inject / @RequestScoped / @Named / @Autowired

24
Q

Qué es un servlet conceptualmente? Qué dos objetos maneja principalmente?

A

Es un elemento de la arquitectura JEE que sirve como capa de control antes de dar paso a la capa de negocio. Es el que recibe la petición http y devuelve la respuesta http

httpServletRequest

httpServletResponse

Puede haber varios por aplicación, y todos ellos comparte el mismo ServletContext, que es uno por aplicación

25
Q

Qué tres métodos gestionan el ciclo de vida de un servlet?

A

init(config) → La primera vez que se crea la aplicación

service(req.res) → Cada vez que se recibe una petición

destroy() → cuando se apaga el servidor de aplicaciones

26
Q

Cómo se llaman también los productos que implementan JPA? Ejemplos de productos

A

Se llaman también ORM

Hibernate

TopLink (ahora EclipseLink)

OpenJPA

NHibernate

27
Q

En JPA, Qué métodos hacen lo siguiente en el EntityManager (EM):
almacenar nuevas entidades en la BBDD
comprueba si una entidad está “manejada” por el EM
localizar una entidad a través de un clave primaria
provoca que los cambios pendientes del EM se sincronicen en la BBDD
convierte una entidad “no manejada” por el EM en “manejada”
eliminar una entidad de la BBDD

A
  • 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
28
Q

En JPA, cuáles son las anotaciones principales de una “entidad”:
• @Entity
• @Id
• @Table
• @Column
• @OneToMany
• @Transient
• @NamedQuery
• @Query

A
  • @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)
29
Q

En JPA, por defecto cómo son las relaciones @OneToOne, @OneToMany son por defecto en cuanto a su carga en memoria de las entidades relacionadas?

A

De tipo FetchType.LAZY, quiere
decir, que no se van a cargar esos objetos relacionados hasta que no haga falta

Otro tipo que se puede especificar es FetchType.EAGER para sí que se carguen los objetos relacionados

30
Q

Qué estructura interna tiene un servidor web que implemente JEE?

A
  • WebContainer → Servlet, JSP, …
  • EJBContainer → EJB (Session, Entity, MDB, …)
  • Motor WebService (Soap, REST)
  • Servicios J2EE

Sobre la JRE

31
Q

Qué tipo de paquete se despliega en un servidor de aplicaciones JEE? Qué contiene?

A

El paquete EAR (Enterprise ARchive)

Contiene:

  • application.xml
  • 1 o más WAR (Web ARchive), que contienen cada uno una aplicación web completa
  • Opcionalmente puede tener JARs (Java ARchive) que contiene los EJBs
32
Q

Qué contiene un WAR?

A

Contiene una aplicación web completa

  • archivos .html, .css, .js, .jsp, …
  • WEB-INF → clases.class, librerías.jar, web.xml
33
Q

De qué clase es un objeto servlet? De qué clase hereda esta clase?

A

HttpServlet

Hereda de GernericServlet

34
Q

Los objetos httpResponse y httpRequest que manejan los servlets, qué interfaces implementan respectivamente?

A

HttpServletResponse

HttpServletRequest

Ambas a su vez heredan de las interfaces ServletResponse y ServletRequest

35
Q

Cuantas instancias del servlet hay en memoria en el WebContainer para cada aplicación iniciada?

A

Una sola instancia de cada servlet por cada aplicación. Al arrancar la aplicación se crea con .init(config), recibe las llamadas por .service(request) y cuando se apaga la aplicación se elimina con .destroy()

36
Q

Qué es el http session en un servlet?

A

Objeto con la información de sesión del usuario, se crea una por cada usuario conectado a la aplicación

37
Q

Qué es un servlet context en un SERVLET?

A

Equivale a la “global”, hay uno por cada aplicación

38
Q

Cómo es la conversación típica entre html/jsp.. con los servlets y el negocio?

A

En el WEB.xml se configura cada servlet con una acción (nombre o url)

El flujo puede entrar al servlet desde un submit de una página o una url en el navegador

El servlet en su método doGet suele hacer dispatcher a la página que tiene asociada

this.getServletContext().getRequestDispatcher(“/WEB-INF/jsp/datosEconomicos.jsp”).forward(req, resp);

El servlet en su método doPost suele recoger datos de la request y al final redireccionar a otra accion del WEB.xml (al GET otro servlet)

resp.sendRedirect(“confirmacionAlta.accion”);

39
Q

Leer guia rápida JEE

A

https://zbrain-academy.es/pluginfile.php/76224/mod_resource/content/1/dzone-rc-java-ee-7.pdf

40
Q

Cuál es la estructura interna de un WAR?

A
  • Tiene los archivos de presentación (html, css, js, jsp)
  • Tiene un dierctorio WEB-INF que dentro tiene: Clases, librerías jar y el fichero web.xml
41
Q

Qué es el fichero web.xml de un WAR?

A

Es un fichero que lee y analiza el WebContainer (Tomcat por ej) del servidor de aplicaciones

En él se configuran:

  • Servlets y filters
  • Parámetros (típicas constantes de configuración)
  • Tiempo de sesión
  • Parámetros de Seguridad
42
Q

Cuáles son las etiquetas en el web.xml para:

indicar el método de autenticación

forzar https

indicar que un sevlet se cargue en memoria al desplegar el war, en lugar de en la primera petición

A

auth-method

transport-garantee

load-on-startup

43
Q

Qué métodos tiene el componente HttpServletRequest para:

Obtener las cookies del cliente

obtener un parámetro de la cabecera

obtener un parámetro de la url

obtener un atributo

guardar un objeto como atributo

obtener el objeto HttpSession del usuario

A

getCookies

getHeader(parámetro)

getParameter(parámetro)

getAttribute(atributo)

setAttribute(“atributo”, objeto)

getSession()

44
Q

Qué métodos tiene el componente HttpServletResponse para:

añadir una cookie

añadir un parámetro a la cabecera

establecer el tipo mime

redireccionar al navegador a otra url

A

addCookie()

addHeader()

setContentType(tipoMime)

sendRedirect(url)

45
Q

Qué 3 métodos principales tiene la clase abstracta HttpServlet?

A

doGet()

doPost()

getServletContext()

46
Q

Qué métodos principales tienen los componentes HttpSession y ServletContext?

A

HttpSession (se saca de HttpServletRequest.getSession())

  • getAttribute()
  • setAttribute()

ServletContext (se saca de HttpServlet.getServletContext())

  • getAttribute()
  • setAttribute()
  • getRequestDispatchetr(path) → luego se le hace un .forward(req,resp) en el servlet para redirigir a otra jsp
47
Q

Qué tres modos de autenticación se pueden configurar en el fichero web.xml del war?

A
  • BASIC: ventana del navegador auto_
  • FORM: Una página que haces tú
  • CLIENT-CERT: El servidor le pedirá al cliente un ciertificado
48
Q

Qué tres modos de autenticación se pueden configurar en el fichero web.xml del war?

A
  • BASIC: ventana del navegador auto_
  • FORM: Una página que haces tú
  • CLIENT-CERT: El servidor le pedirá al cliente un ciertificado
49
Q

Si se configura la autenticación BASIC en el fichero web.xml del WAR de una aplicación web que corre en el Web Container de un servidor de aplicaciones, ¿cómo es el flujo de esa autenticación entre el usuario y el servidor)

A
  • El usuario a través del navegador solicita una página
  • El servidor devuelve un 401 y redirige a una página (pop-up) estándar para introducir usuario y contraseña
  • El usuario lo rellena y envía, lo que genera otra petición get con un header que contiene el authorization:basic (cadena base64 con “usuario:contraseña”)
50
Q

Qué interfaces o librerías de implementación de servicios web SOAP?

A

JAX-WS es el api, pero las implementaciones o productos que implementan ese api son:

Eclipse metro

Axis2

Glassfish

Apache CXF

Jboss en wildfly

51
Q

¿Existe algun estandar para JSON? ¿En java hay algun API? ¿y librerias?

A
    • Estandar ECMA 404
    • En Java el API se llama JSON-P y las librerias mas usadas son Jackson y GSON
52
Q

En JEE, ¿a que se refiere el API JTA? ¿Que tipo producto hay detras de este API y para que sirve?

A

Sirve para poder usar el servicio de transacciones distribuidas.

Detras de este API el producto se denomina “monitor de transacciones” (JBossTS, Atomikos)

53
Q

Qué tipo de producto es Jetty?

A

Sólo es un contenedor WEB, no es un servidor de aplicaciones JEE

54
Q

Cómo se llama la cookie que se genera en jee?

A

JSESSIONID

55
Q

Qué métodos tiene el componente HttpServletRequest para:

Obtener las cookies del cliente

obtener un parámetro de la cabecera

obtener un parámetro de la url

obtener un atributo

guardar un objeto como atributo

obtener el objeto HttpSession del cliente

A

getCookies

getHeader(parámetro)

getParameter(parámetro)

getAttribute(atributo)

setAttribute(“atributo”, objeto)

getSession()