2011-11-18 12 views
5

मैं एक डेमो डिफ़ॉल्ट हाइबरनेट और डिफ़ॉल्ट डेटाबेस JBoss के रूप में के साथ भेज दिया साथ के रूप में 7 JBoss का उपयोग करता है को लागू करने की कोशिश ("subdeployment पर नाम के एक तैनाती इकाई नहीं खोजा जा सका")। मेरे कार्यान्वयन JBoss (मैं एक वेब सेवा को लागू करने और EAR के रूप में तैनात करने के लिए कुछ अतिरिक्त परियोजनाएं हैं) से "लॉगिन" उदाहरण की तरह है और मैं अंतर नहीं पकड़ सकते। वैसे भी मैं लगातार क्रम अपवाद प्राप्त इस तरह केहठ JBoss में काम करने के लिए नहीं कर सकते हैं 7

Caused by: java.lang.RuntimeException: Can't find a deployment unit named at subdeployment "myproject.persistence.war" of deployment "myproject.ear" 
    at org.jboss.as.weld.services.bootstrap.WeldJpaInjectionServices.getScopedPUName(WeldJpaInjectionServices.java:94) [jboss-as-weld-7.0.2.Final.jar:7.0.2.Final] 
    at org.jboss.as.weld.services.bootstrap.WeldJpaInjectionServices.resolvePersistenceContext(WeldJpaInjectionServices.java:59) [jboss-as-weld-7.0.2.Final.jar:7.0.2.Final] 
    at org.jboss.weld.util.Beans.injectEEFields(Beans.java:784) [weld-core-1.1.2.Final.jar:2011-07-26 15:02] 

मेरे MANIFEST.MF

Manifest-Version: 1.0 
Dependencies: org.hibernate 

के रूप में मेरे beans.xml खाली है। मेरे lib फ़ोल्डर में मेरे पास हाइबरनेट जार हैं जो मूल हाइबरनेट सुविधाओं तक पहुंच सकते हैं।

मेरे persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence 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" 
    version="2.0"> 
    <persistence-unit name="accessControlDatabase"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> 
     <properties> 
      <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

और मेरे दो प्रासंगिक वर्गों:

import javax.enterprise.inject.Produces; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

public class Resources { 
    @SuppressWarnings("unused") 
    @Produces 
    @PersistenceContext(name = "accessControlDatabase") 
    private EntityManager em; 
} 

import java.util.List; 

import javax.enterprise.context.RequestScoped; 
import javax.inject.Inject; 
import javax.inject.Named; 
import javax.persistence.EntityManager; 

import myproject.model.Session; 
import myproject.model.User; 

@Named("accessControlRepository") 
@RequestScoped 
public class AccessControlRepository { 
    @Inject 
    private EntityManager em; 

    @SuppressWarnings("unchecked") 
    public List<Session> getAllSessions() { 
     return em.createQuery("from Session").getResultList(); 
    } 
} 

क्या अपवाद पैदा कर सकता है? समस्या को हल करने के लिए मुझे क्या देखना चाहिए?

उत्तर

8

मैं एक समाधान मिल गया है। मुझे persistence.xmlमेटा-आईएनएफईएआर प्रोजेक्ट के फ़ोल्डर में रखना होगा। अगर मैं ऐसा इसलिए मैं @PersistenceContext एनोटेशन का उपयोग EntityManager पर प्राप्त करने के लिए कर सकते हैं। मुझे लगता है कि इसे दूसरी तरफ भी काम करना चाहिए। यह एक वास्तविक समाधान नहीं है, एक समाधान है।

+0

और जहां 'पहले persistence.xml' किया गया था? ईएआरबी-जार की मेटा-आईएनएफ निर्देशिका में ईएआर के भीतर? –

+12

और किसी को भी युद्ध प्रयोग करने के लिए, persistence.xml में होना चाहिए your_app_name \ src \ मुख्य \ संसाधन \ META-INF यह मेरी 1 घंटे :( – halil

+0

हाय, कई आईडीई के (IntelliJ) की तरह यदि आप गलत फ़ोल्डर में दृढ़ता एक्सएमएल बनाने लग गए 'war का उपयोग कर रहे हैं। बहुत उपयोगी टिप्पणी – Goot

0

आप निम्नलिखित तरीके से myproject.persistence.war के अपने web.xml फ़ाइल में एक हठ इकाई संदर्भ परिभाषित करना चाहिए

<persistence-unit-ref> 
    <persistence-unit-ref-name>myprojectPersistenceUnit/pu</persistence-unit-ref-name> 
    <persistence-unit-name>../myproject.name.jar#myprojectPersistenceUnit</persistence-unit-name> 
</persistence-unit-ref> 

एक आम गलती कर रही है इस <persistence-unit-name> सामग्री के संदर्भ गलत लिखा है, यह एक स्रोत है कि इस उत्पन्न करता है त्रुटि

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