以编程方式配置带有嵌入式 tomcat 7 的 hibernate

2023-12-25

我正在尝试在我的应用程序中配置嵌入式 tomcat 实例,而无需任何配置文件。

我做了一些研究并以此为基础长教程 http://www.ehow.com/how_7999843_stepbystep-hibernate-tomcat-mysql-tutorial.html and 较短的一个 https://community.jboss.org/wiki/UsingHibernateWithTomcat我提取了这个步骤:

  1. 创建一个ServletContextListener

    @WebListener //some articles on the web mentioned, that this would add the 
    //Listener automatically to the app context, but i cant believe that this works in my case
    public class HibernateListener implements ServletContextListener {
    
        public void contextInitialized(ServletContextEvent event) {
            HibernateUtil.getSessionFactory(); // create a factory
        }
    
        public void contextDestroyed(ServletContextEvent event) {
            HibernateUtil.getSessionFactory().close(); // free resources
        }
    }
    
  2. 将该侦听器添加到应用程序上下文中

    Context rootCtx = tomcat.addContext("", base.getAbsolutePath());
    rootCtx.getServletContext().addListener("com.example.listeners.HibernateListener");
    
    tomcat.start();
    tomcat.getServer().await();
    
  3. 实施HibernateUtil具有必要配置的类

    public class HibernateUtil {
    
        private static final SessionFactory sessionFactory;
    
        static {
            try {
                //should i call .configure() on the returned Configuration here?                
                sessionFactory = getConfiguration()
                        .buildSessionFactory();
            } catch (Throwable ex) {
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
    
        }
    
        private static Configuration getConfiguration(){
            Configuration c = new Configuration();
    
            c.setProperty("hibernate.connection.url", "jdbc:hsqldb:hsql://localhost:1234/mydb1");
            c.setProperty("hibernate.connection.username", "SA");
            c.setProperty("hibernate.connection.password", "");
            c.setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver");
    
    
            c.setProperty("dialect", "org.hibernate.dialect.HSQLDialect");
            c.setProperty("cache.provider_class", "org.hibernate.cache.NoCacheProvider");
            c.setProperty("cache.use_query_cache", "false");
            c.setProperty("cache.use_minimal_puts", "false");
            c.setProperty("max_fetch_depth", "3");
    
            c.setProperty("show_sql", "true");
            c.setProperty("format_sql", "true");
            c.setProperty("hbm2ddl.auto", "create");
    
            c.addPackage("com.example.models");
            c.addAnnotatedClass(MyClass.class);
    
            return c;
        }
    
        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
    }
    
  4. 现在我应该以某种方式与MyClass通过 hibernate 创建和检索链接数据库中的数据,对吗? (现在我不确定,具体如何,但这不是重点)

但不幸的是我得到了NullPointerException当我尝试将侦听器添加到 tomcat 时

线程“main”中的异常 java.lang.NullPointerException org.apache.catalina.core.ApplicationContext.addListener(ApplicationContext.java:1278) 在 org.apache.catalina.core.ApplicationContextFacade.addListener(ApplicationContextFacade.java:649)

指向该线rootCtx.getServletContext().addListener("com.example.listeners.HibernateListener");

EDIT 1

但如果我正在跑步休眠独立(没有tomcat)它可以工作fine。数据正在保存,没有错误!

In HibernateUtil

public static void main(String[] args) {
    MyClass mycls = new MyClass();

    mycls.setMyProperty("My Property");
    Session session = getSessionFactory().openSession();
    Transaction transaction = session.beginTransaction();
    session.save(mycls);
    transaction.commit();
}

所以我认为我配置休眠的方式很好。该错误与侦听器添加有关...

我在这里做错了什么?


经过深入研究 Tomcat 的源代码,我找到了一种可能的解决方案:

rootCtx.addApplicationListener(new ApplicationListener("com.example.listeners.HibernateListener", false));

它满足了我的需要!

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

以编程方式配置带有嵌入式 tomcat 7 的 hibernate 的相关文章

  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 如何通过套接字从 UWP 应用程序连接到 Unity 游戏服务器套接字?

    我想将从 UWP 应用程序的 Microsoft Band 收到的一些心率值发送到 Unity 我目前在 Unity 中有一个正在运行的 Tcp 服务器 但我似乎无法在 UWP 中使用 System Net Sockets 有人知道如何在U
  • 使用Java下载文件随机冻结

    当我尝试下载文件时 在本例中它只是一个图像 但真正的应用程序是一个更新机制 InputStream似乎冻结了read 我很确定我的代码没问题 所以我想知道为什么会发生这种情况以及它是否只在我的计算机上 有人可以运行这个吗 请注意 Timer
  • 在 Kotlin 中,是否可以在运行时更改委托?

    下面的代码生成的字节码创建了一个private final Base delegate 0领域中的Derived班级 当可变字段b分配的原始委托不会改变 有没有办法在运行时更改委托 同时保持zero boilerplate执行 interf
  • 如何在 Java Jersey 中使用 CDI 事件?

    我正在尝试遵循这篇文章的赞成答案 使用 JAX RS 和 Jersey 进行基于 REST 令牌的身份验证的最佳实践 https stackoverflow com questions 26777083 best practice for
  • UIScrollView 内的 UITableView 滚动后未收到第一次点击

    Brief 我有一个问题UITableView里面一个UIScrollView 当我滚动外部scrollView the table没有收到willSelect didSelect第一次触摸时发生事件 但第二次触摸时发生 更奇怪的是 单元本
  • 如何删除输入表单中引号前的 \

    您好 当我在我的网站上发布某些内容并在其中使用引号时 我会得到类似的内容 我需要对我的代码做什么来解决这个问题 大概是魔术语录 http php net manual en security magicquotes php这就是导致这种行为
  • jquery:双击打开链接?

    我想知道这是否是最好的解决方案 folder a click function e e preventDefault folder a dblclick function e window location replace this att
  • 使用 Python 设置文件中日期字符串的格式

    我从客户端获取 csv 文件 其中包含可变数量的列 在这些列中 可能有一些列包含日期字符串 但未定义顺序 例如 column1str column2dt column3str column4int column5int column6dt
  • 洛蒂和 RecyclerView

    我在用着Lottie https github com airbnb lottie androidRecyclerView 的 ViewHolder 内的动画 滚动时 帧速率太低 即使动画暂停也会发生这种情况 对这个问题有什么建议或解决方案
  • 设置 matplotlib 默认图形窗口标题

    图窗的默认窗口标题是图 X 其中 X 每个图都会增加 我知道如何更改图形的标题 fig pylab gcf fig canvas set window title Test 但是如何更改默认窗口标题 使其成为 测试 1 测试 2 等 以便不
  • Provider 与 Get_it

    在搜索 Flutter 的依赖注入解决方案时 我发现了两个很棒的库 provider and get it 据我所知 provider有更多的样板 但它非常适合 Flutter 允许Consumer重建部分Widget树 一旦注入的值发生变
  • 列在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中

    我下面有 sql 查询 但执行时遇到问题 SELECT from Select row number OVER Order By FloorUserId as row number FloorUserId max CASE WHEN Are
  • 我可以在 Typescript 中重用函数的参数定义吗?

    我想捕获一个函数的编译时参数结构 我可以在具有相似签名的多个函数定义中重用该结构 我认为这可能是沿着这个TS问题 https github com Microsoft TypeScript issues 4130或者更具体地说this on
  • 如何解决 JSON.parse: 字符串文字中的错误控制字符,在此代码中[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我是初学者JSON文档 这是我的代码 所以请帮助我解决这个错误 id design utilisateur rev 1 967a00dff5
  • Linux、Mono、共享库和未解析的符号

    我有一个填充库 共享 C 它调用另一个共享库 libexif 中的函数 并为 C 提供一个简单的接口以进行平台调用调用 也就是说 C 程序使用 PInvoke 调用我的自定义共享库 而我的自定义共享库又调用另一个共享库 在 Windows
  • Django - 如何使用 South 重命名模型字段?

    我想更改模型中特定字段的名称 class Foo models Model name models CharField rel models ForeignKey Bar 应更改为 class Foo models Model full n
  • 在 C/C++ 中高效地从结构化文件中读取数据

    我有一个文件如下 该文件由两部分组成 标题和数据 数据部分被分成大小相等的页面 每个页面都保存特定指标的数据 可能需要多个页面 不必是连续的 来保存单个指标的数据 每个页面由页眉和页体组成 页眉有一个名为 下一页 的字段 它是保存相同指标数
  • Memcache::set() 损坏的管道

    一般来说 Memcache 正在工作 但我的日志中多次出现这样的情况 Memcache set memcache set 发送 8192 字节失败 errno 32 管道破裂 字节数变化 PHP5 3 Memcache https www
  • XCTestCase waitForExpectationsWithTimeout:handler: 当未满足期望时抛出 EXC_BAD_ACCESS

    我正在使用 XCTestExpectation 测试异步调用 当completionHandler 在给定的 1 秒超时之前执行时 以下代码有效 测试成功 func test async call prepare let sut Class
  • 以编程方式配置带有嵌入式 tomcat 7 的 hibernate

    我正在尝试在我的应用程序中配置嵌入式 tomcat 实例 而无需任何配置文件 我做了一些研究并以此为基础长教程 http www ehow com how 7999843 stepbystep hibernate tomcat mysql