0

私は Apache Jackrabbit 2.4.3 を正常に使用してきましたが、現在はデフォルト構成を使用して 2.6.0 (どちらの場合もスタンドアロン サーバー) を使用しているため、リポジトリはファイル システムに保存されます。

代わりに MySQL バックエンドに接続するにはどうすればよいですか? 移行について心配する必要はありません。新規インストールとしてセットアップするだけです。

以下の手順を試した後、Jackrabbit が正しく起動しないか、データベースの DATASTORE テーブルにデータを入力できず、ログに次のエラーが見つかりました。

ERROR [main] RepositoryImpl.java:366           failed to start Repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager
    javax.jcr.RepositoryException: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager
    [... oodles of backtrace cut ...]

[編集: ここに完全なバックトレースがあります]

2013-03-04 10:59:27.526 WARN  [main] Slf4jLog.java:89                  unavailable
javax.jcr.RepositoryException: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager
        at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1353) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.RepositoryImpl.createVersionManager(RepositoryImpl.java:486) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:311) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:589) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.RepositoryContext.create(RepositoryContext.java:149) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.servlet.jackrabbit.JackrabbitRepositoryServlet.init(JackrabbitRepositoryServlet.java:109) ~[jackrabbit-standalone-2.6.0.jar:na]
        at javax.servlet.GenericServlet.init(GenericServlet.java:241) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.jetty.Server.doStart(Server.java:224) [jackrabbit-standalone-2.6.0.jar:na]
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.standalone.Main.run(Main.java:173) [jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.standalone.Main.main(Main.java:60) [jackrabbit-standalone-2.6.0.jar:na]
Caused by: javax.jcr.RepositoryException: Could not load JDBC driver class org.gjt.mm.mysql.Driver
        at org.apache.jackrabbit.core.util.db.ConnectionFactory.getDriverClass(ConnectionFactory.java:265) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.util.db.ConnectionFactory.createDataSource(ConnectionFactory.java:233) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataSource(ConnectionFactory.java:169) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.getDataSource(BundleDbPersistenceManager.java:569) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.init(BundleDbPersistenceManager.java:537) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager.init(MySqlPersistenceManager.java:51) ~[jackrabbit-standalone-2.6.0.jar:na]
        at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1349) ~[jackrabbit-standalone-2.6.0.jar:na]
        ... 23 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217) ~[na:1.6.0_27]
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.6.0_27]
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205) ~[na:1.6.0_27]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321) ~[na:1.6.0_27]
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) ~[na:1.6.0_27]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266) ~[na:1.6.0_27]
        at java.lang.Class.forName0(Native Method) ~[na:1.6.0_27]
        at java.lang.Class.forName(Class.java:188) ~[na:1.6.0_27]
        at org.apache.jackrabbit.core.util.db.ConnectionFactory.getDriverClass(ConnectionFactory.java:260) ~[jackrabbit-standalone-2.6.0.jar:na]
        ... 29 common frames omitted

私がこれまでに行ったこと:

問題なく接続できる Jackrabbit データベース/ユーザーを作成しました。

mysql -D jackrabbit -u jackrabbit -h localhost -pjackrabbit

構成ファイルがここから来ることを除いて、白紙の状態 (空の /var/jackrabbit ディレクトリ) から始めました: https://raw.github.com/wiki/jackalope/jackalope/files/repository.xml

私が使用している起動スクリプトは次のとおりです: https://github.com/sixty-nine/Jackrabbit-startup-script

そして、実行される Java プロセスは次のとおりです。

java -XX:MaxPermSize=128m -Xmx512M -Xms128M -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1111 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/opt/jackrabbit/startup/jmx.user -Dcom.sun.management.jmxremote.access.file=/opt/jackrabbit/startup/jmx.role -jar /opt/jackrabbit/jackrabbit-standalone-2.6.0.jar -h 127.0.0.1 -p 8080

私はそれが問題になるほど十分に進んでいるとは思いませんが、MySQL 5.5.28-1 を使用しています。

2.4.3 と 2.6.0 の両方で上記の問題が発生しています。

また:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

さらに、その後、MySQL JDBC ライブラリを Debian にインストールしました。

apt-get install libmysql-java
4

4 に答える 4

1

MySQL ドライバーを Apache Jackrabbit-standalone でロードするため。jackrabbit-stabndalone-x.x.x.jarMANIFEST.MFを更新する必要があります。

次のように、ファイルの末尾に Class-Path ステートメントを追加するだけです。

クラスパス: lib/mysql-connector-java-5.1.25-bin.jar

私はあなたと同じ問題を抱えていましたが、これが MySQL ドライバー クラスを認識させる唯一の方法でした。

于 2013-06-04T15:38:51.840 に答える
1

は、非常に古いMySqlPersistenceManagerドライバ クラスをロードしようとします。代わりにorg.gjt.mm.mysql.Driver、より新しいドライバー クラスを使用してみてください。これを行うには、次のように、およびすべてのファイルcom.mysql.jdbc.Driverで持続性マネージャーを構成する必要があります。repository.xmlworkspace.xml

<PersistenceManager ...>
    ...
    <param name="driver" value="com.mysql.jdbc.Driver"/>
</PersistenceManager>
于 2013-03-04T13:52:14.167 に答える
0

私自身の質問に答えますが、直接答えることはありません。

jackrabbit-standaloneバージョンを使用する代わりに、次の手順に従って、Tomcatで正常に実行できます。

https://github.com/jackalope/jackalope/wiki/Running-jackrabbit-in-tomcat-with-mysql

これは私に必要なものを与えてくれます。MySQLデータストアに接続する動作中のJackrabbitインスタンス。これは、これに遭遇し、特にJackrabbitをスタンドアロンで使用する必要がある人には役立ちませんが、Tomcatでのセットアップは私にとってはるかに簡単であることがわかったので、検討する価値があります。

于 2013-03-04T15:42:49.357 に答える
0

以下の活動をお願いします。

  1. スタンドアロン サーバー jar を解凍します (私の場合は、jackrabbit-standalone-2.8.3 です)。多くのフォルダが表示されます。その中には、2 つのフォルダーがあります。1.com 2. 組織。

  2. jar mysql-connector-java-5.1.30-bin を解凍します。再び、上記の 2 つのフォルダーが見つかります。両方のフォルダーに移動し、git(org) と mysql(com) をコピーします。

  3. ステップ1のフォルダ内にそれぞれ貼り付けます。スタンドアロン サーバーを再起動します。

よろしく、 ニテッシュ

于 2016-11-07T14:40:50.850 に答える