6
私は、JBoss 5.1とHibernate 3.6、JPA 2.0とSpring 3.0.5を使用しています。 私はのように見えるEARファイル構築するためにMavenを使用します。私は、JBoss 5.1で、このEARファイルをデプロイする場合、私はwarファイルをデプロイする場合、私は、しかし、エラーJBoss 5.1:エンティティクラスが見つかりません(vfszip)
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]
を取得
AutoTrader.ear
-------> META-INF
--------------> application.xml
--------------> jboss-app.xml
--------------> MANIFEST.MF
-------> AutoTrader.war
分解、それは正常に動作します。 ご提案は大歓迎です。
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"/>
:私はNativeScannerを拡張ResourceScannerを追加した
:
おかげで、 アディ
UPDATE
Th爆発した戦争ファイルで再び動作します。
しかしEARファイルの場合には、プロトコルがvfszipないVFSです。
どうすればいいですか?
依存jarファイルが見つかる可能性があるため、爆発した耳のように聞こえます。 EARでは、マニフェストファイルのクラスパスにあるもの、あるいはapplication.xmlファイルを参照する必要があります。クラスパスの問題のように聞こえるかもしれません。あるいは、配備の問題であるかもしれません。クラスがエンティティをEARの中で最初に展開することを探しているが、おそらく展開されたバージョンが別の順序で展開する場合。これは時には問題であるため、依存関係を調べて、EARで定義できるかどうかを確認してください。 – Logan
WARのレイアウトは何ですか? persistence.xmlはありますか?マネージャとサブスクリプションクラスに@Entity(または適切なXML設定が提供されています)という注釈を付けましたか?サードパーティのJARは、WARs WEB-INF/libおよびEARs libディレクトリに置かなければなりません。 – kierans