[
http://jira.jboss.com/jira/browse/JBSEAM-2802?page=comments#action_12405910 ]
Eric Jung commented on JBSEAM-2802:
-----------------------------------
This bug is both has both code additions and configuration steps.
In the Websphere Application Server 6.1 (also works in 5.x) administrative console:
1. Define a Resource Environment Provider
a. Goto Resources->Resource Environment->Resource Environment Providers. Press
"New"
b. Enter a name. I chose "JPA" but "Seam Bridge" might have been
more appropriate. Click "Apply" then "Save".
2. Define a Referenceable
a. From the Resource Environment Provider list, click the Resource Environment
Provider you created in step one.
b. Under "Additional Properties", click "Referenceables"
***c. Click "New" and enter com.company.EMFactoryBridge for "Factory
Class Name" and javax.persistence.EntityManagerFactory for "Class Name"
d. Click "Apply" then "Save"
3. Define a Resource Environment Entry
a. Goto Resources->Resource Environment->Resource environment entries. Press
"New".
b. Ensure the Resource Environment Provider you created in step 1 is selected in the
"Provider" drop-down list.
c. Enter EMFactoryBridge (or whatever you like) for "Name". Enter
seam/EMFactoryBridge for JNDI name. This is the value Seam will use to instantiate your
provider, expecting it to return a javax.persistence.EntityManagerFactory instance.
d. Ensure com.company.EMFactoryBridge is selected in the "Referenceables"
drop-down list.
e. Click Apply then Save.
4. Provide the persistence unit name to the EMFactoryBridge
a. Goto Resources->Resource Environment->Resource environment entries and click
the entry created in step 3 (EMFactoryBridge)
b. Under Additional Properties, click "Custom properties"
c. Click New
d. Under "Name", enter persistence-unit-name
e. Under "Value", enter the name of the persistence unit in persistence.xml
to be used by this EntityManager. This is the attribute "name" on the
<persistence-unit/> element. See attached sample. Here I've chosen
"bookingDatabase" as the name.
d. Ensure java.lang.String is selected in the "Type" drop-down list.
e. Click Apply then Save.
5. In components.xml, specify seam/EMFactoryBridge (or whatever value is chose in step 3c)
for the persistence-unit-jndi-name attribute of the
<persistence:managed-persistence-context/> element. See attached example.
6. Ensure the attached class is in your application's CLASSPATH at runtime (not
necessary at build time)
You can now use any persistence provider you like, specified in persistence.xml as usual.
You can now inject EntityManager instances into non-EJBs using @In (without
@PersistenceContext).
*** Hopefully, you'll integrate the attached
org.jboss.seam.persistence.EMFactoryBridge patch into the trunk. Then the user can specify
org.jboss.seam.persistence.EMFactoryBridge here (not com.company.EMFactoryBridge), and not
have to include the attached class in each and every Seam project. Step 6 would also be
obsolete.
Websphere: unable to inject EntityManager into non-EJBs
-------------------------------------------------------
Key: JBSEAM-2802
URL:
http://jira.jboss.com/jira/browse/JBSEAM-2802
Project: JBoss Seam
Issue Type: Patch
Components: EJB3
Environment: Websphere 6.1 with EJB Feature Pack
Reporter: Eric Jung
Seam currently is unable to inject EntityManager instances into non-EJB components. Patch
attached.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira