jar
Oracle アプリケーション サーバーのファイル内にデプロイされている場合、Hibernate リソースが見つからないという問題があります。
LocalSessionFactoryBean
次のように定義された休止状態のマッピングファイルがいくつかあります。
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingLocations">
<list>
<value>classpath:/mapping/*.hbm.xml</value>
</list>
</property>
...
</bean>
この Bean 定義はファイルにありますapplicationContext.xml
。
hibernate マッピング、これらのマッピングによって参照されるクラス、およびファイルは、 artifact を生成するapplicationContext.xml
moduleにあります。foo
foo.jar
同じファイル.ear
を参照して使用するを作成しました。これを Oracle アプリケーション サーバーにデプロイすると、次のエラーが表示されます。foo.jar
applicationContext.xml
.ear
java.io.FileNotFoundException: class path resource [mapping/] cannot be resolved to absolute file path because it does not reside in the file system: code-source:/.../oas10.1.3/j2ee/.../applications/.../WEB-INF/lib/foo.jar!mapping/
調べてみると、期待どおりに Hibernate マッピング ファイルを含むディレクトリ/WEB-INF/lib/foo.jar
が表示されます。mappings
foo
健全性チェックとして、次のテストを実行する と に依存する単純なプロジェクトを作成しました。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class AppTest {
@Autowired SessionFactory sessionFactory;
@Test
public void loadObjects() {
Session session = sessionFactory.openSession();
List<Foo> results = session.createQuery("from Foo").list();
System.out.println("found " + results.size() + " results");
}
}
これは期待どおりに機能します。HQL クエリが実行され、データベースから正しい数の Foo オブジェクトが返されます。
では、なぜその単純なアプリケーションは機能するマッピング リソースを参照するfoo.jar
のに、Oracle アプリ サーバーで同じことを行うとリソースが見つからないのでしょうか?
編集:mappingJarLocations
代わりに使用してみましたmappingLocations
:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingJarLocations">
<list>
<value>WEB-INF/lib/foo.jar</value>
</list>
</property>
...
</bean>
を取得しましたFileNotFoundException
。
編集:mappingLocations
(最初の例のように)の代わりに使用に戻りましmappingJarLocations
たが、今回はファイルをファイルのディレクトリ*.hbm.xml
に直接コピーしました。.war
WEB-INF/classes
当然のことながら、これはうまくいきました:
setMappingLocations() - file:/.../oas10.1.3/j2ee/.../applications/.../raps-site-9.0/WEB-INF/classes/mapping/Address.hbm.xml
提案されているようにユーティリティ jar を試してみますが、一時的な手段としてpom.xml
、マッピングを に直接コピーするように変更しますWEB-INF/classes
。