首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

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

Stack Overflow用户
提问于 2013-10-28 20:17:25
回答 1查看 3.2K关注 0票数 0

我已经在玻璃鱼4中使用了jca-jca-2.6.4.rar部署了Jack兔子2.6.4。

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

代码语言:javascript
复制
    <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)时:

代码语言:javascript
复制
    <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>

没有运行时属性数据库供应商:在部署时创建空表:在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:comp/env/jcr/SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,’错误删除表: falsejava.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多个原因是: SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,中的‘java:comp/env/jcr/存储库’查找失败: javax.naming.NamingException:查找失败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] 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:在javax.naming.InitialContext.lookup(InitialContext.java:411) at 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 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:411javax.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更多的原因是: java.lang.RuntimeException: javax.resource.ResourceException:未能创建存储库:无法实例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager在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更多原因是: javax.resource.ResourceException:未能创建存储库:无法实例化持久性管理器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)在com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:156) . 88 ]]

我在Glassfish中配置了Mysql连接池和JDBC连接资源( JDBC /MySQLDataSource),并将mysql-连接器-java-5.1.26-bin.jar放在域/lib目录中。我可以通过Admin中的Glassfish JDBC连接池页面成功地平入数据库。

我是不是在JackRabbit PersistanceManager配置中遗漏了什么?

更新1

如果我不使用我的数据源,而是在我的PersistanceManager配置中使用JDBC来连接到数据库,它就会像预期的那样工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-28 21:57:43

事实证明,Mysql连接池没有正确配置。

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

  • 用户
  • 密码
  • DatabaseName
  • ServerName
  • Url
  • URL

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

jdbc:mysql://127.0.0.1:3306/db_name

此时,我不知道为什么会有Url和URL属性,但是将它们都设置为上面的URL是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19644294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档