gpt4 book ai didi

java - 在 Glassfish 3 Web 服务中使用 Hibernate

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:08 24 4
gpt4 key购买 nike

我有一个使用 Hibernate 进行持久化的 Java 应用程序。现在,我尝试将此应用程序的一部分公开为部署到 Glassfish 3.0.1 的 Web 服务。

实现该服务的代码位于 JAR 文件中,该文件与 WAR 文件一起部署到 Glassfish 中。 WAR中的服务代码访问JAR文件中使用Hibernate的类没有问题。

但是,当我尝试调用该服务时,会抛出异常,提示 Hibernate 找不到 hibernate.cfg.xml 文件。我一生都无法弄清楚 .cfg 文件应该放在 JAR、WAR 或 Glassfish 中的哪个位置,以便可以在类路径上找到它。

我尝试将它放在 WAR 文件中的 META-INF 目录中(当我检查 WAR 时,它实际上是“meta-inf”)以及 JAR 中的同一目录中。我还尝试在几个不同的 Glassfish 目录中创建 META-INF 目录,但均无济于事。

在 Eclipse 中开发此服务时,为了将其放入类路径中,我不得不花了不少时间来考虑将 .cfg 文件放在哪里。似乎这也是将其部署到 GF 时的问题。

谁能告诉我 .cfg 文件应该放在哪里,以便在 GF 中部署此服务时可以访问它?

谢谢

克里斯

最佳答案

如果您使用无参数 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 Core 引用指南中:

3.7. XML configuration file

An alternative approach to configuration is to specify a full configuration in a file named hibernate.cfg.xml. This file can be used as a replacement for the hibernate.properties file or, if both are present, to override properties.

The XML configuration file is by default expected to be in the root of your CLASSPATH. (...)

关于java - 在 Glassfish 3 Web 服务中使用 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3517292/

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