Produces the emf too, no?
Le 27 juil. 2012 18:20, "Martin Kjær Jørgensen" <[email protected]> a écrit :

> On 27-07-2012 08:26, Romain Manni-Bucau wrote:
> > 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).
> >>
> >
>
> I'm already @Inject'ing EntityManager from my producer class. I'm only
> using @PersistenceContext for the EntityManagerFactory.
>

Reply via email to