2012-04-24 10 views
6

मैं जेबॉस 5.1 का उपयोग हाइबरनेट 3.6, जेपीए 2.0 और वसंत 3.0.5 के साथ कर रहा हूं। मैं Maven का उपयोग EAR फ़ाइल जो की तरह दिखता है निर्माण करने के लिए:जेबॉस 5.1: इकाई वर्ग नहीं मिला (vfszip)

AutoTrader.ear 
-------> META-INF 
--------------> application.xml 
--------------> jboss-app.xml 
--------------> MANIFEST.MF 
-------> AutoTrader.war 

अगर मैं JBoss 5.1 में इस कान फ़ाइल को तैनात, मैं त्रुटि मिलती है

org.springframework.dao.InvalidDataAccessApiUsageException: Not an entity: class uk.co.aol.shipmanager.domain.Manager; nested exception is ja 
va.lang.IllegalArgumentException: Not an entity: class uk.co.aol.shipmanager.domain.Subscription 
     at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:286) ~[at_war-1.0.war:3 
.0.5.RELEASE] 
     at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104) ~[at_war-1.0.war:3.0.5.RELEASE 
] 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:368) ~[at_war-1. 
0.war:3.0.5.RELEASE] 
     at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58 
) ~[at_war-1.0.war:3.0.5.RELEASE] 

हालांकि, अगर मैं तैनात युद्ध फ़ाइल विस्फोट , यह बढ़िया काम करता है। कोई भी सुझाव स्वागत है।

धन्यवाद, आदि

अद्यतन:

मैं एक ResourceScanner जो NativeScanner फैली जोड़ लिया है: वसंत-persistence.xml में

public class ResourceScanner extends NativeScanner { 

    @Override 
    public Set<Class<?>> getClassesInJar(final URL jarToScan, 
      final Set<Class<? extends Annotation>> annotationsToLookFor) { 
     return super.getClassesInJar(patchUrl(jarToScan), annotationsToLookFor); 
    } 

    @Override 
    public Set<NamedInputStream> getFilesInJar(final URL jarToScan, final Set<String> filePatterns) { 
     return super.getFilesInJar(patchUrl(jarToScan), filePatterns); 
    } 

    @Override 
    public Set<Package> getPackagesInJar(final URL jarToScan, 
      final Set<Class<? extends Annotation>> annotationsToLookFor) { 
     return super.getPackagesInJar(patchUrl(jarToScan), annotationsToLookFor); 
    } 

    @Override 
    public String getUnqualifiedJarName(final URL jarToScan) { 
     return super.getUnqualifiedJarName(patchUrl(jarToScan)); 
    } 

    /** 
    * Patch the VFS URL to a FILE protocol URL. 
    * 
    * @param url 
    *   original URL. 
    * @return either the original, either the corresponding FILE protocol of given VFS URL. 
    */ 
    protected URL patchUrl(final URL url) { 
     String protocol = url.getProtocol(); 

     if (protocol.equals("vfs")) { 
      try { 
       File file = new File(url.getFile()); 
       return file.toURI().toURL(); 
      } catch (final MalformedURLException e) { 
       return url; 
      } catch (IOException e) { 
       e.printStackTrace(); 
       return url; 
      } 

     } 
     return url; 
    } 
} 

और,,

<property name="hibernate.ejb.resource_scanner" value="uk.co.aol.shipmanager.ResourceScanner"/> 

था फिर से विस्फोटित युद्ध फ़ाइल में काम करता है।

लेकिन एक EAR फ़ाइल के मामले में, प्रोटोकॉल vfszip नहीं वीएफएस है।

कृपया बताएं कि क्या करना है ???

+0

यह विस्फोटित कान कार्यों की तरह लगता है क्योंकि यह निर्भर जार फ़ाइलों को पा सकता है। मुझे लगता है कि एक ईएआर के साथ आपको या तो मेनिफेस्ट फ़ाइल के क्लासपाथ में या शायद application.xml फ़ाइल में संदर्भित करना होगा। यह क्लासपाथ मुद्दे की तरह लगता है, या शायद यह एक तैनाती आदेश मुद्दा है। यदि कक्षा ईएआर में पहली बार तैनात इकाई की तलाश में है, लेकिन हो सकता है कि विस्फोटित संस्करण एक अलग क्रम में तैनात हो। यह कभी-कभी एक मुद्दा है, इसलिए अपनी निर्भरताओं की जांच करें और देखें कि क्या आप उन्हें ईएआर में परिभाषित कर सकते हैं। – Logan

+0

युद्ध का लेआउट क्या है? क्या आपके पास एक persistence.xml है? क्या आपने प्रबंधक और सदस्यता कक्षाओं को @Entity (या उपयुक्त XML कॉन्फ़िगरेशन प्रदान किया है) के साथ एनोटेट किया है। तीसरे पक्ष के जारों को एक डब्ल्यूएआरएस वेब-आईएनएफ/लिब या ईएआरएस लिब डीआईआर में जाना चाहिए। – kierans

उत्तर

0

क्या आपने निम्न सिस्टम पैरामीटर का उपयोग करने की कोशिश की है और देखें कि क्या इसने समस्या को हल करने में मदद की है?

-Dorg.jboss.net.protocol.file.useURI=false