mysql - 无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

标签 mysql glassfish jackrabbit

我已使用 jackrabbit-jca-2.6.4.rar 在 Glassfish 4 中部署了 Jackrabbit 2.6.4。

当我使用以下配置时一切正常(通过 JDBC 进行 Derby):

    <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager">
      <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
      <param name="schemaObjectPrefix" value="${wsp.name}_"/>
    </PersistenceManager>

但是当我切换到这个(Mysql 通过数据源)时:

    <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager">
      <param name="url" value="jdbc/MySQLDataSource"/>
      <param name="driver" value="javax.naming.InitialContext"/>
      <param name="schemaObjectPrefix" value="${wsp.name}_"/>
    </PersistenceManager>

No Runtime properties Database Vendor : null Create Tables at Deploy : false Delete Tables at Undeploy : false into class com.pepedigital.omakase.template.boundary.TemplateManager: Lookup failed for 'java:comp/env/jcr/repository' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:717) at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:484) at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:170) at org.glassfish.weld.services.InjectionServicesImpl.aroundInject(InjectionServicesImpl.java:138) ... 70 more Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/jcr/repository' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.CommunicationException: Communication exception for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName=java:comp/env/jcr/repository} [Root exception is java.lang.RuntimeException: javax.resource.ResourceException: Failed to create repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager]] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) at javax.naming.InitialContext.lookup(InitialContext.java:411) at javax.naming.InitialContext.lookup(InitialContext.java:411) at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:613) ... 73 more Caused by: javax.naming.CommunicationException: Communication exception for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName=java:comp/env/jcr/repository} [Root exception is java.lang.RuntimeException: javax.resource.ResourceException: Failed to create repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:513) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) at javax.naming.InitialContext.lookup(InitialContext.java:411) at javax.naming.InitialContext.lookup(InitialContext.java:411) at com.sun.enterprise.naming.util.JndiNamingObjectFactory.create(JndiNamingObjectFactory.java:90) at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:745) at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:715) at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:159) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471) ... 77 more Caused by: java.lang.RuntimeException: javax.resource.ResourceException: Failed to create repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager at com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:200) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:527) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:487) ... 85 more Caused by: javax.resource.ResourceException: Failed to create repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager at org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:220) at org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createConnectionFactory(JCAManagedConnectionFactory.java:153) at com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:156) ... 88 more ]]

我已经在Glassfish中配置了Mysql JDBC连接池和JDBC连接资源(jdbc/MySQLDataSource),并将mysql-connector-java-5.1.26-bin.jar放在domain/lib目录中。我可以通过管理 UI 中的 Glassfish JDBC 连接池页面成功 ping 数据库。

我是否在 JackRabbit PersistanceManager 配置中遗漏了某些内容?

更新1

如果我不使用数据源,而是在 PersistanceManager 配置中使用 JDBC URL 来连接到数据库,它将按预期工作。

最佳答案

原来是Mysql JDBC连接池配置不正确。

为了让它工作,我必须设置以下属性:

  • 用户
  • 密码
  • 数据库名称
  • 服务器名称
  • 网址
  • 网址

我还必须在 Url 和 URL 字段中重复数据库和服务器名称,例如

jdbc:mysql://127.0.0.1:3306/db_name

此时我不确定为什么有一个 Url 和一个 URL 属性,但将它们都设置为上面的 URL 是有效的。

关于mysql - 无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644294/

相关文章:

Glassfish v3 集群配置类路径库

mysql - 河马和长耳兔的关系

Apache Jackrabbit 在 WebDAV 匿名访问中抛出 403

java - 使用 java jackrabbit web dav 客户端从 Exchange Server 2003 下载电子邮件附件

mysql - JSF 应用程序创建过多数据库连接

mysql - 如何在 Yii2 框架中 ping mysql 服务器

mysql - 如何在 Joomla 模型中格式化 SQL 查询中的日期列

java - 如何为 NetBeans Java Web App 项目向 Ant 添加 jar 文件以便构建它?

java - 如何使用 Web 应用程序运行不确定的后台进程/线程

php - 第一行查询故障?