无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager [英] Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

查看:173
本文介绍了无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have deployed Jackrabbit 2.6.4 in Glassfish 4 using jackrabbit-jca-2.6.4.rar.

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

Everything works when I use the following configuration (Derby via JDBC):

    <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)时:

but when I switch to this (Mysql via a datasource):

    <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>

没有运行时属性 数据库供应商:null 部署时创建表:false 在Undeploy处删除表:进入类com.pepedigital.omakase.template.boundary.TemplateManager中的false:在SerialContext [myEnv = {java.naming.factory.initial = com.NET]中无法对"java:comp/env/jcr/repository"进行查找. 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.命名} 在com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:717) 在com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:484) 在com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:170) 在org.glassfish.weld.services.InjectionServicesImpl.aroundInject(InjectionServicesImpl.java:138) ...更多70 引起原因:javax.naming.NamingException:在SerialContext中查找"java:comp/env/jcr/repository"失败[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} [根异常是javax.naming.CommunicationException :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} [根异常是java.lang.RuntimeException :javax.resource.ResourceException:无法创建存储库:无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager]] 在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491) 在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) 在javax.naming.InitialContext.lookup(InitialContext.java:411) 在javax.naming.InitialContext.lookup(InitialContext.java:411) 在com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:613) ...另外73个 由以下原因引起:javax.naming.CommunicationException: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} [根异常是java.lang.RuntimeException:javax.resource.ResourceException:无法创建存储库:无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager] 在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:513) 在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) 在javax.naming.InitialContext.lookup(InitialContext.java:411) 在javax.naming.InitialContext.lookup(InitialContext.java:411) 在com.sun.enterprise.naming.util.JndiNamingObjectFactory.create(JndiNamingObjectFactory.java:90) 在com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:745) 在com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:715) 在com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:159) 在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471) ...更多77 引起原因:java.lang.RuntimeException:javax.resource.ResourceException:无法创建存储库:无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager 在com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:200) 在javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) 在com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:527) 在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:487) ...另外85个 原因:javax.resource.ResourceException:无法创建存储库:无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager 在org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:220) 在org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createConnectionFactory(JCAManagedConnectionFactory.java:153) 在com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:156) ...还有88个 ]]

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目录中.我可以通过管理界面中的Glassfish JDBC连接池页面成功ping数据库.

I have configured a Mysql JDBC Connection Pool and JDBC Connection Resource (jdbc/MySQLDataSource) in Glassfish and placed mysql-connector-java-5.1.26-bin.jar in the domain/lib directory. I can successfully ping the database via the Glassfish JDBC Connection Pool page in the Admin UI.

我在JackRabbit PersistanceManager配置中缺少什么吗?

Am I missing something in the JackRabbit PersistanceManager configuration?

更新1

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

If I don't use my datasource and instead use a JDBC URL in my PersistanceManager configuration to connect to the database it works as expected.

推荐答案

事实证明Mysql JDBC连接池配置不正确.

It turns out that the Mysql JDBC connection pool was not configured correctly.

为了使其正常工作,我必须设置以下属性:

In order to get it to work I had to set the following properties:

  • 用户
  • 密码
  • 数据库名称
  • ServerName
  • 网址
  • URL

我还必须在"URL"和"URL"字段中重复数据库和服务器名称.

I also had to repeat the database and server name in the Url and URL fields e.g.

jdbc:mysql://127.0.0.1:3306/db_name

jdbc:mysql://127.0.0.1:3306/db_name

目前,我不确定为什么有一个Url和URL属性,但是将它们都设置为上述URL还是可以的.

At this point I'm not sure why there is a Url and a URL property but setting both of them to the above URL worked.

这篇关于无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆