2013-10-28 36 views
0

我已經在Glassfish 4中使用jackrabbit-jca-2.6.4.rar部署了Jackrabbit 2.6.4。無法實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager

一切正常,當我用下面的配置(通過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)切換到這一點:

<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中刪除表:將false刪除到類com.pepedigital.omakase.template.boundary.Templ ateManager: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} 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 引起:javax.naming.NamingException:Lookup在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:創建失敗repository:無法實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager]] at com.sun.enterprise.naming.impl.SerialContext.look (SerialContext.java:491) at javax.naming.InitialContext.lookup(InitialContext.java:411) at javax。com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) 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.reso urce.ResourceException:未能創建存儲庫:無法實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:513) 在javax.naming.InitialContext.lookup(InitialContext.java)中的com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) (位於javax.naming.InitialContext.lookup(InitialContext.java:411) :411) at 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) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471) ... 77更多 引起通過:java.lang.RuntimeException:javax.resource.ResourceException:無法創建存儲庫:無法在com.sun.enterprise.resource.naming.ConnectorObjectFactory實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager 。 javax.naming.spi.Namin的getObjectInstance(ConnectorObjectFactory.java:200) gManager.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上實例化持久性管理器org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager 。 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更多 ]]

我在Glassfish的配置一個MySQL JDBC連接池和JDBC連接資源(JDBC/MySQLDataSource),並置於MySQL的連接器的Java-5.1.26-bin.jar在domain/lib目錄。我可以通過管理界面中的Glassfish JDBC連接池頁面成功地ping數據庫。

我在JackRabbit PersistanceManager配置中丟失了什麼嗎?

更新1

如果我不使用我的數據源,而是使用JDBC URL在我PersistanceManager配置連接到它按預期工作數據庫。

回答

0

事實證明Mysql JDBC連接池配置不正確。

爲了得到它的工作,我不得不設置以下屬性:

  • 用戶
  • 密碼
  • 數據庫名
  • 服務器名
  • 網址
  • URL

我還必須在Url和URL字段中重複使用數據庫和服務器名稱,例如

的jdbc:mysql的://127.0.0.1:3306/DB_NAME

在這一點上我不知道爲什麼會有一個URL,URL屬性,但他們都設定在上述網址工作。

相關問題