Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Injecting EntityManager in servlet, it seems not thread safe

I want to make a login app in Java EE. I thought of implementing it using a html page, a servlet and an entity class for the user, but it seems that EntityManager is not thread safe (can't be injected in the servlet and I need it to check the database) .

I read about EntityManagerFactory but I don't want to manage the life of the produced EntityManager when I can have the container do it. I think that some implementation using the DAO pattern could be made so that I can have an entity manager in the servlet, something like DAOImpl containing a manager, and have that class as a private variable in the servlet. But I couldn't find any useful tutorials online.

Could someone provide an implementation for this?

like image 407
something Avatar asked May 23 '15 11:05

something


2 Answers

The way to go is to create a LoginService as @Stateless. It should contains the EntityManager. This EJB concern is manage login.

Now Inject the EJB into your servlet.

The container will take care about the concurrency.

http://www.adam-bien.com/roller/abien/entry/is_in_an_ejb_injected

like image 117
Ezequiel Avatar answered Oct 09 '22 12:10

Ezequiel


Follow Oracle suggested documentation here ,any approach should do : Either :

Injecting EntityManagerFactory in your dao impl via SerlvetContextListener.

 @PersistenceUnit        
 private EntityManagerFactory emf;

Or Injecting the EntityManager in your DaoImpl.

@PersistenceContext
    private EntityManager em;
like image 39
Amit Parashar Avatar answered Oct 09 '22 12:10

Amit Parashar