JBoss 5.1 :Классы сущностей не найдены (vfszip)

Я использую JBoss 5.1 с Hibernate 3.6, JPA 2.0 и Spring 3.0.5. Я использую maven для создания файла EAR, который выглядит как :

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

, если я развертываю этот файл ear в 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:

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;
    }
}

и весной -persistence.xml,

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

Это снова работает в развернутом файле войны.

Но в случае файла EAR используется протокол vfszip , а не vfs .

Подскажите пожалуйста что делать???

6
задан adi 24 April 2012 в 18:34
поделиться