在 Magnolia:用 MySQL 替换 H2:JackRabbit 无法实例化持久性管理器

Posted

技术标签:

【中文标题】在 Magnolia:用 MySQL 替换 H2:JackRabbit 无法实例化持久性管理器【英文标题】:In Magnolia: Replacing H2 with MySQL: JackRabbit Cannot instantiate persistence manager 【发布时间】:2019-06-13 10:09:02 【问题描述】:

我想使用 mysql 而不是嵌入式 H2 设置 Magnolia。

我关注了 Magnolia 和 JackRabbit Wiki:https://wiki.magnolia-cms.com/display/WIKI/Setting+up+a+Jackrabbit+persistence+manager,并进行了 4 项必要的更改:

    我安装了 MySQL 并创建了一个 Magnolia 数据库和一个可以访问它的用户:

    创建数据库 magnl_author; 创建数据库 magnl_public; 创建用户“mgnl_admin”@“localhost”由“超级用户”识别; 将 magnl_author.* 上的所有权限授予“mgnl_admin”@“localhost”; 将 magnl_public.* 上的所有权限授予 'mgnl_admin'@'localhost';

    我在 magnolia.properties 中设置了 magnolia.repositories.jackrabbit.config = WEB-INF/config/repo-conf/jackrabbit-bundle-mysql-search.xml .xml

    我将 mysql-connector-java-8.0.16.jar 添加到 webapps\magnoliaAuthor\WEB-INF\lib 并删除了 derby- 10.14.1.0.jar

    我配置了 jackrabbit-bundle-mysql-search.xml 可以在 https://drive.google.com/file/d/13QImOipAUwZd0bOTFi_kZloIG549URpk/view?usp=sharing 中看到,因此 PM(持久性管理器)配置为版本控制和工作区。

但是,当我启动 Tomcat 时,我仍然收到以下错误: 错误 org.apache.jackrabbit.core.RepositoryImpl : 无法启动 Repository: 无法实例化持久性管理器 org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

【问题讨论】:

你能分享完整的堆栈跟踪吗? 日志跟踪可见:drive.google.com/file/d/13x3kAwZ_cHxIyajd6_ypwgGTJ8JBJAJX/…,谢谢 【参考方案1】:

根据您的堆栈跟踪,您的问题似乎与 TimeZone 有关。我建议暂时将其设置为 UTC,看看是否对您有帮助。

为此,请将您的配置附加到以下行:

&serverTimezone=UTC

例如

  <param name="url" value="jdbc:mysql://localhost:3306/magnolia" />

变成

  <param name="url" value="jdbc:mysql://localhost:3306/magnolia?serverTimezone=UTC" />

希望对你有帮助,

干杯,

【讨论】:

以上是关于在 Magnolia:用 MySQL 替换 H2:JackRabbit 无法实例化持久性管理器的主要内容,如果未能解决你的问题,请参考以下文章

在运行时用 H2 DataSource 替换 DataSource bean

如何从 Magnolia CMS 的默认目录中替换现有命令

使用 MySQL 或 H2 将空值替换为列中的最新值

混合模式下使用 H2 数据库的 Jackrabbit 集群

用magnolia cms在tomcat中部署新战

用 <p> 标签和类替换标题 (<h1>, <h2> ...) 标签