Hibernate 4.3 + Tomcat 7 无法查找 JNDI 名称

2024-04-26

我从 4.2.7 升级到 Hibrernate 4.3.x 时遇到问题。我得到了这个异常:

Caused by: javax.naming.NameNotFoundException: Name [java:comp/env/jdbc/data] is not bound in this Context. Unable to find [java:comp].
at org.apache.naming.NamingContext.lookup(NamingContext.java:820)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at javax.naming.InitialContext.lookup(InitialContext.java:415)
at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:114)
... 82 more

我正在使用 Tomcat 7.0.29(也尝试过 7.0.47)和 JDK 7 (v25)。 Hibernate 4.2.7没有问题。

这是我的 persistence.xml:

<persistence-unit name="data" transaction-type="RESOURCE_LOCAL">
    <non-jta-data-source>java:comp/env/jdbc/data</non-jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.format_sql" value="true" />
    </properties>
</persistence-unit>

但我不认为问题出在这里。我做了一些调试研究并发现了以下内容:

JndiServiceImpl#locate(String jndiName)创建一个不同的初始上下文。

4.3.0 - org.apache.naming.NamingContext

4.2.7 - org.apache.naming.SelectorContext

除此之外,我找不到更多的不同。

我发现了一些与此问题类似的主题,但没有任何帮助。谢谢你的帮助。


是的,这实际上是有问题的,因为他们对如何session-factory工作以及当工厂被要求连接时。

所以你需要在后面解决它session-factorysession-factory请求新的连接。

尝试通过老式方式解决 jndi 中的数据源由 hibernate 单独负责的问题hibernate.cfg.xml像这样:

<hibernate-configuration>
    <session-factory name="data">
        <property name="connection.datasource">java:comp/env/jdbc/data</property>
    ...

并通过以下方式解决配置persistence.xml像这样:

<persistence version="2.0">
    <persistence-unit name="data">
        <properties>
            <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml"/>

也许你的hbm2ddl必须搬到hibernate.cfg.xml那时也是。

玩得开心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 4.3 + Tomcat 7 无法查找 JNDI 名称 的相关文章

随机推荐

  • 如何正确处理自定义MapFunction中的错误?

    我已经实施了MapFunction对于我的 Apache Flink 流程 它正在解析传入元素并将其转换为其他格式 但有时会出现错误 即传入数据无效 我看到两种可能的处理方法 忽略无效元素 但似乎我无法忽略错误 因为对于任何传入元素 我必须
  • PDO在mysql性能中的作用

    最近我在浏览一篇博客 注意到有关在mysql中使用PDO的一些要点 它改变了我对PDO的看法 要点是 本机准备好的语句无法利用查询缓存 从而导致性能降低 本机准备好的语句无法执行某些类型的查询 例如 SHOW TABLES 本机准备好的语句
  • Aptana 3 是否提供与 Aptana 1.5.1 一样好的 PHP 插件?

    有人用过 Aptana 3 吗 它的 PHP 插件是否和 2 0 一样糟糕 这里仍然运行 Aptana 1 5 1 一切都是内置的 Aptana Studio 3 是一个很棒的工具 尽管从经验来看 在处理大型项目时会出现一些问题
  • 广播接收器未调用互联网连接检查

    我正在尝试制作一个简单的应用程序 它会在互联网连接发生变化时通知是否有可用的互联网连接 我在互联网上找到了一些解决方案并尝试实施它们 但不知何故它不起作用 我在清单文件中注册的广播接收器没有调用网络连接更改 Manifest
  • 带有 std::variant 或 union 包装器的通用接口

    这个问题与使用 std variant 强制使用通用接口 无需继承 https stackoverflow com questions 72434897 enforcing a common interface with stdvarian
  • python条件运算符中“and”和“&”的奇怪行为[重复]

    这个问题在这里已经有答案了 以下是使用 和 and 条件运算符尝试的不同场景及其结果 使用Python 2 7 使用 运算符 使用 与 运算符 想知道为什么两个条件运算符表现出不同的行为 用真实场景进行解释会很有帮助 提前致谢 is not
  • 如何为批量角色扮演游戏创建保存/加载命令?

    我正在制作一个基于文本的批量角色扮演游戏 RPG 最近才开始学习 我的 RPG 没有生命值之类的东西 它更像是故事类型的 RPG 基本上 你选择你想做的选项 然后继续故事 每个选项都可以改变结局 所以 我想知道是否有办法保存 RPG 中的
  • Windows 上 Matlab 64 位版本的免费 SCM [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当 Matlab 安装为 64 位版本时 它只能使用 64 位源代码控制系统 是否有免费的源代码控制系统
  • DbContext 已被处置

    我使用 ASP NET MVC 4 和 SQL Server 2008 开发了一个 Web 应用程序 我创建了 ContextManager 类 以便在所有页面中只有一个数据库上下文 public static class ContextM
  • Python 的 super() 如何处理多重继承?

    如何super 使用多重继承 例如 给定 class First object def init self print first class Second object def init self print second class T
  • 如何从PrepareToInstall事件函数设置StatusMsg

    我的应用程序需要安装 NET Framework 因此我运行 NET 安装准备安装事件函数 当安装运行时 我想在向导上显示一些简单的消息 I found 如何在 Inno 安装脚本的 Code 部分设置状态消息 https stackove
  • 将向量或参数传递给 boost::process (boost::fusion)

    我正在尝试创建一个boost process来自字符串参数向量 void runProcess const std string exe const std vector
  • 访问模型字段内的模型实例

    我有一个模型 事件 它具有用户模型 事件的所有者 的外键 该用户可以使用以下 ManyToManyField 邀请其他用户 invites models ManyToManyField User related name invited u
  • 迭代地实现合并排序

    我正在尝试实现合并排序 以便更好地理解它是如何工作的 在下面的代码中 我尝试对数字数组进行排序 我目前拥有的代码有错误并且在无限循环中运行 我现在正在尝试以非递归方式解决这个问题 function mergeSort arr var mid
  • Wappalyzer如何检测网页技术

    Wappalyzer 如何检测站点的后端编程语言 但在某些情况下无法检测 例如 Facebook 使用 PHP 但无法检测并显示 HTTP 2 Wappalyzer 是一个开源社区驱动的平台 其所有源代码都可以在此链接中找到 https g
  • 发生异常时如何优雅地关闭Endpoint?

    我编写了一个小型 JAX WS Web 服务 它在容器外部运行Endpoint publish Endpoint endpoint Endpoint create new MyServiceImpl endpoint publish htt
  • 如何使用 VB.Net 从 SQL Server 2008 检索 VARBINARY 值

    我正在尝试用以下内容填充列表视图varBinary max 价值观 好吧 我实际上需要写每个varBinary转换为 csv 文件 该表由 100 000 奇数行组成 我只是不知道如何检索数据类型 Sub getInformation Tr
  • 我可以在没有管理员权限的情况下在 Windows 上运行 Docker Desktop 吗?

    我知道我需要管理员权限installDocker 桌面 但我必须成为管理员才能run它 这文档 https docs docker com docker for windows install start docker desktop并没有
  • 是否可以使用 Office 365 API 编辑存储在云中的 Office 文档?

    是否可以将我们的 asp net vb net 网站与 Office 365 集成 以便订阅 Office 365 的客户可以使用在线 Office 365 编辑器编辑存储在我们服务器上的文档 我们的网站已经使用 Google Docs 编
  • Hibernate 4.3 + Tomcat 7 无法查找 JNDI 名称

    我从 4 2 7 升级到 Hibrernate 4 3 x 时遇到问题 我得到了这个异常 Caused by javax naming NameNotFoundException Name java comp env jdbc data i