簡體   English   中英

無法實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

[英]Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

我已經使用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>

無運行時屬性數據庫供應商:null部署時創建表:false取消部署時刪除表:false進入類com.pepedigital.omakase.template.boundary.TemplateManager:在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 com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:717)上的com.sun.enterprise.container.common上的.factory.url.pkgs = com.sun.enterprise.naming} org.glassfish.weld.services.InjectionServicesImpl的.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:484)位於com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:170) .aroundInject(InjectionServicesImpl.java:138)... 70更多原因:javax.naming.NamingException:'java:comp / env / j查找失敗 cr / repository”中的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}。[根異常是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。命名,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上的com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)。 com.sun.enterprise.container.common上的javax.naming.InitialContext.lookup(InitialContext.java:411)處的SerialContext.lookup(SerialContext.java:438)在com.sun.enterprise.container.common處的javax.naming.InitialContext.lookup(InitialContext.java:411) .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。 com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:513)的com.sun.enterprise.naming。 ise.naming.impl.SerialContext.lookup(SerialContext.java:438)在javax.naming.InitialContext.lookup(InitialContext.java:411)在javax.naming.InitialContext.lookup(InitialContext.java:411)在com.sun com.sun.enterprise.namingNampl.Impl.Glass上的.enterprise.naming.util.JndiNamingObjectFactory.create(JndiNamingObjectFactory.java:90)位於com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:745) com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:159)的com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)的.lookup(GlassfishNamingManagerImpl.java:715) )... 77更多原因:java.lang.RuntimeException:javax.resource.ResourceException:無法創建存儲庫:無法在com.sun.enterprise上實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager。 javax.nam上的resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:200) com.sun.enterprise.naming.impl.SerialContext.lookup(com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:527)處的ing.spi.NamingManager.getObjectInstance(NamingManager.java:321) SerialContext.java:487)...還有85個原因:javax.resource.ResourceException:無法創建存儲庫:無法在org.apache.jackrabbit.jca上實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createConnectionFactory(JCAManagedConnectionFactory.java:153)上的.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:220)在com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:156 )...還有88個]]]

我已經在Glassfish中配置了Mysql JDBC連接池和JDBC連接資源(jdbc / MySQLDataSource),並將mysql-connector-java-5.1.26-bin.jar放在domain / lib目錄中。 我可以通過管理界面中的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是可行的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM