Yes normal. Doing it use @inject and not @persistencecontext -Romain Le 27 juil. 2012 07:30, "Martin Kjær Jørgensen" <[email protected]> a écrit :
> On 26-07-2012 15:33, Romain Manni-Bucau wrote: > > Hi, > > > > implementing JPA you can do what you want. > > > > You get properties of your persistence unit and you can even ignore > > datasources if you are not contacting a RDBMS. > > > > Then do your own logic with these properties. > > > > Then you can use @persistenceContext as usually. > > > > - Romain > > > > > > 2012/7/26 Martin Kjær Jørgensen <[email protected]> > > > >> I'm using the TomEE 1.0.0+ stack developing a JEE6 Web App, and I'm > >> looking for a way to make userspecific JTA EntityManager's using CDI or > >> Resource injections. > >> > >> The reason for this is the users in the system are created in a LDAP > >> directory and used by Tomcat (TomEE) and the database server for > >> authentication. So after a user has logged in on a JSF form the same > >> username and password should be used to make EntityManager's. > >> > >> It seems that the JPA is designed to use only one username and password > >> for all users of the application. > >> > >> Have anyone succesfully created a completely user-specific web > >> application all the away down to the databaselevel and anywhere else? > >> > > > > It doesnt seem so. For instance, if I create a EntityManager with a CDI > @Producer method like so (EntityManagerFactory being a private field): > > @Produces > public OpenJPAEntityManager produceEntityManger() { > Map p = new HashMap(); > p.put("javax.persistence.jdbc.user", "abc"); > p.put("javax.persistence.jdbc.password", "abc"); > EntityManager em = emf.createEntityManager(p); > return em; > } > > ... I get a warnings in my log saying: > > WARNING - An unrecognized EntityManager property was passed to > createEntityManager and will be ignored. Key: > "javax.persistence.jdbc.password", Value: "class java.lang.String:abc". > WARNING - An unrecognized EntityManager property was passed to > createEntityManager and will be ignored. Key: > "javax.persistence.jdbc.user", Value: "class java.lang.String:abc". > > > If i provide it with OpenJPA specific properties like so: > > p.put("openjpa.ConnectionUserName", "abc"); > p.put("openjpa.ConnectionPassword", "abc"); > p.put("openjpa.Connection2UserName", "abc"); > p.put("openjpa.Connection2Password", "abc"); > > ... I still get warnings, but not for ConnectionUserName and > ConnectionPassword: > > WARNING - An unrecognized EntityManager property was passed to > createEntityManager and will be ignored. Key: > "openjpa.Connection2Password", Value: "class java.lang.String:abc". > WARNING - An unrecognized EntityManager property was passed to > createEntityManager and will be ignored. Key: > "openjpa.Connection2UserName", Value: "class java.lang.String:abc". > > Apparently, the EntityManager still uses the username and password from > the resource because my persistence code runs without exceptions. It > should fail because I provided wrong username and password (abc:abc). >
