maybe give it a try,

another way is to proxy your datasource IMO

- Romain


2012/7/27 Martin Kjær Jørgensen <[email protected]>

> On 27-07-2012 18:50, Romain Manni-Bucau wrote:
> > 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.
> >>
> >
>
> No i dont have a producer for EMF.
>

Reply via email to