Pregunta 16, JVM sin SingleThreadModel

Temas relacionados con el examen de test
Responder
jroldan3
Usuario registrado
Mensajes: 5
Registrado: 11 Jun 2013, 09:27
Agradecido: 0
Agradecimiento recibido: 0

Pregunta 16, JVM sin SingleThreadModel

Mensaje por jroldan3 »

Hola, debo de estar pasando por alto algo obvio:
¿Por qué la respuesta es "1" y no "tantos como peticiones concurrentes"?

Avatar de Usuario
NachoMarAr
PreparaTIC25
Mensajes: 115
Registrado: 21 May 2015, 14:48
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 16, JVM sin SingleThreadModel

Mensaje por NachoMarAr »

Buenas.

Sin ser experto en servlets, entiendo que si no implementa SingleThreadModel entonces soporta multithreads, por lo que una única instancia de la clase puede tratar cada petición mediante un thread concurrente, y, por tanto, no hace falta tener más de una instancia de la clase

Avatar de Usuario
marioyo100
PreparaTIC27
Mensajes: 32
Registrado: 23 Abr 2013, 10:08
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 16, JVM sin SingleThreadModel

Mensaje por marioyo100 »

Yo creo que la respuesta está mal:

http://docs.oracle.com/javaee/1.4/api/j ... rvlet.html
service

public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
java.io.IOException

Called by the servlet container to allow the servlet to respond to a request.

This method is only called after the servlet's init() method has completed successfully.

The status code of the response always should be set for a servlet that throws or sends an error.

Servlets typically run inside multithreaded servlet containers that can handle multiple requests concurrently. Developers must be aware to synchronize access to any shared resources such as files, network connections, and as well as the servlet's class and instance variables. More information on multithreaded programming in Java is available in the Java tutorial on multi-threaded programming.


https://tomcat.apache.org/tomcat-5.5-do ... Model.html

public interface SingleThreadModel

Ensures that servlets handle only one request at a time. This interface has no methods.

If a servlet implements this interface, you are guaranteed that no two threads will execute concurrently in the servlet's service method. The servlet container can make this guarantee by synchronizing access to a single instance of the servlet, or by maintaining a pool of servlet instances and dispatching each new request to a free servlet.


un saludo

Avatar de Usuario
sray
Usuario registrado
Mensajes: 145
Registrado: 29 Feb 2016, 19:24
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 16, JVM sin SingleThreadModel

Mensaje por sray »

Yo creo que la respuesta es correcta.

Tened en cuenta que la pregunta es "¿cuántos objetos de dicha clase estarán cargados en la memoria de la JVM?"

Cuando se hace una llamada a un servlet:
- Si no está cargado en el contenedor web, se crea una instancia de la clase Servlet, ejecuta su método init y posteriormente dará servicio con alguno de los métodos de servicio: doGet, doPost, doPut,...
- Si ya estaba cargado en el contenedor, cuando llega la petición, simplemente se encamina dicha petición a los métodos de servicio: doGet, doPost, doPut,..

Por lo tanto, sólo tenemos un objeto de dicha clase cargado en la memoria de JVM, que es lo que se preguntaba.

Respecto a SingleThreadModel, la diferencia es que dicho interfaz asegura que solo existe una instancia en un momento concreto gestionando una petición. De tal manera que, si llega otra petición en ese momento, se pone en cola y se procesa posteriormente.

Si no se implementa SingleThreadModel, se atenderán varias peticiones concurrentemente pero siempre a través de la misma instancia del servlet.

Lo que sí es cierto es que la interfaz SingleThreadModel ya está declarada com obsoleta desde el API Servlet 2.4.

reventador
Usuario registrado
Mensajes: 15
Registrado: 25 Nov 2013, 14:22
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 16, JVM sin SingleThreadModel

Mensaje por reventador »

No es lo mismo un hilo que una instancia de la clase, y en el enunciado está hablando de cuántos objetos de la clase están cargados, es decir, del número de instancias, no hilos.
Que implemente la interfaz SingleThreadModel sólo significa que se ejecutará una petición de forma concurrente en lugar de múltiples peticiones. Independientemente de si la implementa o no, el número de objetos instanciados de la clase de un servlet cargado, es 1.

Por tanto la respuesta de la plantilla provisional es correcta.

Avatar de Usuario
marioyo100
PreparaTIC27
Mensajes: 32
Registrado: 23 Abr 2013, 10:08
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 16, JVM sin SingleThreadModel

Mensaje por marioyo100 »

es verdad, error mío :cry:

jroldan3
Usuario registrado
Mensajes: 5
Registrado: 11 Jun 2013, 09:27
Agradecido: 0
Agradecimiento recibido: 0

Re: Pregunta 16, JVM sin SingleThreadModel

Mensaje por jroldan3 »

Muchas gracias a todos. Me queda claro.

Responder

Volver a “PRIMER EXAMEN 2015”