gpt4 book ai didi

spring - JBoss 5.1 : Entity classes not found (vfszip)

转载 作者:行者123 更新时间:2023-12-04 16:12:06 25 4
gpt4 key购买 nike

我正在使用 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

如果我在 JBoss 5.1 中部署这个 ear 文件,我会收到错误消息
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]

但是,如果我部署的 war 文件爆炸,它工作正常。
欢迎任何建议。

谢谢,
阿迪

更新:

我添加了一个扩展 NativeScanner 的 ResourceScanner:
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;
}
}

并且,在 spring-persistence.xml 中,
<property name="hibernate.ejb.resource_scanner" value="uk.co.aol.shipmanager.ResourceScanner"/>

这同样适用于分解的 war 文件。

但是对于 EAR 文件,协议(protocol)是 vfszip 而不是 vfs。

请告诉我该怎么做???

最佳答案

您是否尝试使用以下系统参数并查看它是否有助于解决问题?

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

关于spring - JBoss 5.1 : Entity classes not found (vfszip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com