2012-04-12 14 views
11

मैं JBoss उपयोग कर रहा हूँ 7.1.1 के रूप में औरRESOURCE_LOCAL कंटेनर इंजेक्षन नहीं कर सकते @PersistenceContext

@PersistenceContext(unitName="TestPU") 
private EntityManager entityManager; 

उपयोग कर एक नया JTA डेटा स्रोत है और यह तार मेरी EJB को कॉन्फ़िगर करने में समर्थ जब मैं RESOURCE_LOCAL PersistenceUnit मैं का उपयोग करने की कोशिश की का उपयोग कर EntityManager कामयाब मुझे यह त्रुटि मिल रही है कि मैं @PersistenceContext का उपयोग कर RESOURCE_LOCAL PU को इंजेक्ट नहीं कर सकता।

मैं अपने persistence.xml कॉन्फ़िगर किया है इस प्रकार है:

<persistence-unit name="TestPU" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <properties> 
    <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
     <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/xy"/> 
     <property name="javax.persistence.jdbc.user" value="root"/> 
     <property name="javax.persistence.jdbc.password" value="blah"/>   
     <property name="hibernate.hbm2ddl.auto" value="update" />  
     </properties> 
</persistence-unit> 

और मेरी डीएओ में,

@Stateless 
public class UserDAO { 
    @PersistenceContext(unitName="TestPU") 
    private EntityManager entityManager; 


} 

मेरे एप्लिकेशन पर तैनात 7.1.1 के रूप में मैं निम्न त्रुटि हो रही है।

JBAS011428: Cannot inject RESOURCE_LOCAL container managed EntityManagers using @PersistenceContext 
    at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:169) 
    at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54) 
    at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:162) 
    at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:155) 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    ... 5 more 

@PersistenceContext के साथ RESOURCE_LOCAL PU का उपयोग करने के लिए कोई समाधान?

उत्तर

19

JTA: जावा ईई वातावरण में, लेन-देन डिफ़ॉल्ट अपने JTA लेन-देन से कंटेनर & द्वारा प्रबंधित कर रहे हैं। आप लुकअप या इंजेक्शन द्वारा इकाई प्रबंधक प्राप्त कर सकते हैं।

RESOURCE_LOCAL: जावा एसई में, आवेदन को लेनदेन का प्रबंधन स्पष्ट रूप से & संसाधन स्थानीय लेनदेन मूल लेनदेन होते हैं। आपको EntityManagerFactory & बनाना होगा, फिर से इकाई प्रबंधक बना सकते हैं।

जैसा कि आप इसे एप्लिकेशन सर्वर में तैनात कर रहे हैं, transaction-type को JTA में persistence.xml में बदलें।

+0

आपके लिए स्पष्टीकरण के लिए धन्यवाद। तो WAR/EAR के हिस्से के रूप में जेटीए डेटासोर्स को कॉन्फ़िगर करने का कोई तरीका नहीं है? हम एनोटेशन के साथ ऐसा कर सकते हैं लेकिन मैं एक्सएमएल आधारित विन्यास की तलाश में हूं। –

+0

@ sivaprasadreddy.k आपका स्वागत है। यदि आपने पहले ही डेटा-स्रोत कॉन्फ़िगर किया है, तो आप इसे < 'के साथ persistence.xml में उल्लेख कर सकते हैं। –

+0

@ नयनवेडकर क्या आप हमें RESOURCE_LOCAL (persistence.xml) और EntityManagerFactory (जावा कोड) के साथ एक उदाहरण साझा कर सकते हैं। – Sabarish

संबंधित मुद्दे