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).
>

Reply via email to