我有一个Java应用程序,它使用Hibernate实现持久化。现在,我正在尝试将这个应用程序的一部分公开为部署到Glassfish 3.0.1的web服务。
实现服务的代码位于JAR文件中,JAR文件与WAR文件一起部署到Glassfish中。WAR中的服务代码在访问JAR文件中使用Hibernate的类时没有问题。
但是,当我试图调用服务时,会抛出一个异常,说明Hibernate找不到hibernate.cfg.xml文件。为了我的生命,我不知道.cfg文件应该放在哪里,无论是在JAR、WAR还是在玻璃鱼中,这样就可以在类路径上找到它。
我尝试将它放在WAR文件中的meta目录中(当我检查WAR时它实际上是“meta”),并放在JAR中的同一个目录中。我还尝试在几个不同的玻璃鱼目录中创建一个META目录,但都没有效果。
在Eclipse中开发此服务时,我不得不反复考虑如何放置.cfg文件,以便将其放入类路径。在将它部署到GF时,这似乎也是一个问题。
有人能告诉我.cfg文件的去向吗?这样,当这个服务部署在GF中时,就可以访问它了吗?
谢谢,
克里斯
发布于 2010-08-18 23:34:28
如果您使用的是no-arg Configure#configure()方法,那么hibernate.cfg.xml文件应该位于类路径的根的。
下面是来自o.h.c.Configuration.java的相关片段
/**
* Use the mappings and properties specified in an application
* resource named <tt>hibernate.cfg.xml</tt>.
*/
public Configuration configure() throws HibernateException {
configure( "/hibernate.cfg.xml" );
return this;
}
/**
* Use the mappings and properties specified in the given application
* resource. The format of the resource is defined in
* <tt>hibernate-configuration-3.0.dtd</tt>.
* <p/>
* The resource is found via <tt>getConfigurationInputStream(resource)</tt>.
*/
public Configuration configure(String resource) throws HibernateException {
log.info( "configuring from resource: " + resource );
InputStream stream = getConfigurationInputStream( resource );
return doConfigure( stream, resource );
}实际上,Hibernate核心参考指南中记录了这一点:
3.7。XML配置文件 配置的另一种方法是在名为
hibernate.cfg.xml的文件中指定完整的配置。此文件可用作hibernate.properties文件的替代文件,如果两者都存在,则可以重写属性。 配置文件在默认情况下应该位于CLASSPATH. (.)的根目录中。
https://stackoverflow.com/questions/3517292
复制相似问题