मैं आज के रूप में ग्लासफ़िश 3.1-स्नैपशॉट चला रहा हूं (2010-11-12)।पीयू निर्दिष्ट होने पर त्रुटियों को "एक निरंतरता इकाई को हल नहीं किया जा सका ..."
मैं एम्बेडेड EJBContainer का उपयोग कर रहा हूं।
classpath पर, के रूप में EJBContainer द्वारा रिपोर्ट, मैं एक META-INF/persistence.xml है। यह फ़ाइल दो दृढ़ता इकाइयों को परिभाषित करती है: जिसे "एनजीपी" कहा जाता है और जिसे "सीएक्स" कहा जाता है।
डिबगिंग आउटपुट पता चलता है कि Glassfish जेपीए deployer यह पाता है, और दोनों cx पीयू और NGP पीयू को पहचानता है।
निम्नलिखित सभी के लिए भी आम जेपीए त्रुटि के साथ बाहर EJBContainer बम:
java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [cx] in the scope of the module called [/Users/ljnelson/Projects/foo/target/test-classes/]. Please verify your application.
at com.sun.enterprise.deployment.BundleDescriptor.findReferencedPUViaEMRef(BundleDescriptor.java:693)
at com.sun.enterprise.deployment.EjbBundleDescriptor.findReferencedPUs(EjbBundleDescriptor.java:910)
at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:140)
at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:869)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.kernel.embedded.EmbeddedDeployerImpl.deploy(EmbeddedDeployerImpl.java:193)
at org.glassfish.kernel.embedded.EmbeddedDeployerImpl.deploy(EmbeddedDeployerImpl.java:142)
at org.glassfish.ejb.embedded.EJBContainerImpl.deploy(EJBContainerImpl.java:135)
at org.glassfish.ejb.embedded.EJBContainerProviderImpl.createEJBContainer(EJBContainerProviderImpl.java:132)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:127)
मैं फिर से तनाव है कि तैनाती लॉग पता चलता है कि कम से कम deployer का सामना करना पड़ता दोनों दृढ़ता इकाइयों।
वर्ग "cx" का उपयोग करना चाहता है कि पीयू सामान्य बॉयलरप्लेट शामिल हैं:
@PersistenceContext(unitName="cx")
private EntityManager em;
persistence.xml (सामान्य Maven जगह) target/test-classes/META-INF
में मौजूद है और इस तरह दिखता है:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="cx" transaction-type="JTA">
<jta-data-source>java:global/jdbc/H2Test</jta-data-source>
<!-- snip -->
</persistence-unit>
<persistence-unit name="ngp" transaction-type="JTA">
<jta-data-source>java:global/jdbc/H2Test</jta-data-source>
<!-- snip -->
</persistence-unit>
</persistence>
Glassfish एम्बेडेड EJBContainer, जबकि इसके काम कर रही है, इस आउटपुट:
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINE: Got [email protected]
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINER: With attribute name
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINER: With value cx
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINE: in class com.sun.enterprise.deployment.PersistenceUnitDescriptor method setName with cx
...snip...
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINE: Got [email protected]
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINER: With attribute name
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINER: With value ngp
Nov 12, 2010 1:24:05 PM com.sun.logging.LogDomains$1 log
FINE: in class com.sun.enterprise.deployment.PersistenceUnitDescriptor method setName with ngp
समस्या निवारण व्यंजनों, कोई भी?
मुझे जिक्र करना चाहिए कि मैं जेटीए - कंटेनर प्रबंधित लेनदेन का उपयोग कर रहा हूं - दोनों पीयू में। यह मेरे लिए होता है कि एक्सए यहां एक आवश्यकता होगी। क्या यह तथ्य होगा कि मेरे परीक्षण डेटा स्रोत XA अनुपालन इस त्रुटि के कारण नहीं हैं? –
एक्सए का उपयोग करने के लिए डेटा स्रोत अपडेट किया गया; कोई प्रभाव नहीं। –
क्या डेटा स्रोत XA हैं या इससे कोई फर्क नहीं पड़ता है, कम से कम अब नहीं (बाद में यदि आप एक ही समय में दोनों ईएम का उपयोग करने का निर्णय लेते हैं लेकिन यह एक और कहानी है)। क्या यह केवल एक पीयू के साथ काम करता है? –