0

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 アンデプロイ時にテーブルを削除する: クラス com.pepedigital.omakase.template.boundary.TemplateManager に false: 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)、com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:170)glassfish.weld.services.InjectionServicesImpl.aroundInject(InjectionServicesImpl.java:138) ... 70 以上 原因: javax.naming.NamingException: 'java:comp/env/jcr/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.naming、com.sun.enterprise.naming.論理名=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) 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 詳細原因: 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. 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: リポジトリの作成に失敗しました: 永続性マネージャー org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager を com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:200) でインスタンス化できません) com.sun.enterprise の javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) にあります。com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:487) で Naming.impl.SerialContext.getObjectInstance(SerialContext.java:527) ... 85 以上 原因: javax.resource.ResourceException: 失敗リポジトリを作成するには: org.apache.jackrabbit.jca.JCAManagedConnectionFactory の org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:220) で持続性マネージャー org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager をインスタンス化できません.createConnectionFactory(JCAManagedConnectionFactory.java:153) at com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:156) ... 88 詳細 ]]lookup(SerialContext.java:487) ... 85 以上 原因: javax.resource.ResourceException: リポジトリの作成に失敗しました: 持続性マネージャー org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager を org.apache.jackrabbit でインスタンス化できませんcom.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java) の .jca.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:220) :156) ... 88 以上 ]]lookup(SerialContext.java:487) ... 85 以上 原因: javax.resource.ResourceException: リポジトリの作成に失敗しました: 持続性マネージャー org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager を org.apache.jackrabbit でインスタンス化できませんcom.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java) の .jca.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:220) :156) ... 88 以上 ]]com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance( ConnectorObjectFactory.java:156) ... 88 以上 ]]com.sun.enterprise.resource.naming.ConnectorObjectFactory.getObjectInstance( ConnectorObjectFactory.java:156) ... 88 以上 ]]

Glassfish で Mysql JDBC 接続プールと JDBC 接続リソース (jdbc/MySQLDataSource) を構成し、domain/lib ディレクトリに mysql-connector-java-5.1.26-bin.jar を配置しました。管理者 UI の Glassfish JDBC 接続プール ページからデータベースに正常に ping できます。

JackRabbit の PersistanceManager 構成に何か足りないものはありますか?

更新 1

データソースを使用せず、代わりに PersistanceManager 構成で JDBC URL を使用してデータベースに接続すると、期待どおりに機能します。

4

1 に答える 1

0

Mysql JDBC 接続プールが正しく構成されていないことが判明しました。

それを機能させるために、次のプロパティを設定する必要がありました。

  • ユーザー
  • パスワード
  • データベース名
  • サーバー名
  • URL
  • URL

また、Url フィールドと URL フィールドでデータベース名とサーバー名を繰り返す必要がありました。

jdbc:mysql://127.0.0.1:3306/db_name

この時点では、なぜ Url と URL プロパティがあるのか​​わかりませんが、両方を上記の URL に設定するとうまくいきました。

于 2013-10-28T21:57:43.347 に答える