最近、WebLogic Portal 9.2.3 から 10.3.5 にアップグレードしました。Day Software JSR-170 VCR-JCR プロバイダーを介して接続された JackRabbit リポジトリがあります。これはすべて 9.2.3 では問題なく機能していましたが、10.3.5 ではコンテンツを取得しようとすると IllegalMonitorStateException が発生します。JCR-170 を実装する JackRabbit の上に独自のファサードがあります。サーバーからのデバッグは次のとおりです。
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2b70161: (re)initializing all repo sessions for username: <WLS Kernel>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2bf2311: (re)initializing all repo sessions for username: <WLS Kernel>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: (re)initializing all repo sessions for username: <anonymous>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository():801] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: no session found for repoName=indhold; need to connect
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository():821] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: connect write lock acquired for repoName=indhold
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connectToRepository():875] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: connecting to repositoryName= indhold
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepositoryClass():1503] invoking Class.forName(repoClassName)
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepository():1403] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: Ticket authentication error for: indhold java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:363)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1317)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:745)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepositoryClass(RepositoryManagerDelegate.java:1537)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepository(RepositoryManagerDelegate.java:1327)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connectToRepository(RepositoryManagerDelegate.java:893)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository(RepositoryManagerDelegate.java:832)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connect(RepositoryManagerDelegate.java:1160)
at com.bea.content.federated.internal.delegate.RepositoryHelper.checkCapability(RepositoryHelper.java:759)
at com.bea.content.federated.internal.CapabilityManagerImpl.checkRepositoryCapability(CapabilityManagerImpl.java:57)
at com.bea.content.federated.internal.ManagerImplCapabilityHelper.checkCapability(ManagerImplCapabilityHelper.java:80)
at com.bea.content.federated.internal.ManagerImplCapabilityHelper.verifyCapability(ManagerImplCapabilityHelper.java:54)
at com.bea.content.federated.internal.NodeManagerImpl.getNode(NodeManagerImpl.java:432)
at dk.skat.portal.front.helper.ContentHelper.getNode(ContentHelper.java:1591)
authenticationn が失敗したようですが、リポジトリのログイン方法にブレークポイントを設定しようとすると (Facade は認証チャレンジを行わず、JackRabbit をラップするだけで、同じユーザーにログインします - "default " - すべてのアクセスに対して)、呼び出されることはありません。[リポジトリの管理] ページでユーザー名とパスワードを設定しても、効果がないようです。一方、Portal Administration Console に移動してリポジトリを管理または参照しようとすると、すべてが正常に機能し、ログイン メソッドが実際に呼び出され、サーバーがリポジトリに正常に接続されます。これは非常に奇妙に思えます。場合によっては (ランダムに発生することがあります。サーバーが突然リポジトリにアクセスできるようになりますが、サーバーを再起動すると、再び失敗に戻ります)。
リポジトリのユーザー名/パスワードを weblogic ユーザーに設定しようとしましたが、効果がないようで、まだエラーが発生します。さらに、PAC にアクセスしてログアウトし、ブラウザーを閉じてブラウザーを再度開くか、まったく別のブラウザーを使用すると、PAC に入るとリポジトリがアクティブになり、オンラインになるようです (ただし、これは安定しておらず、望ましくありません)。
WebLogic にバグがある場合 (ReadLock を unlock() しようとする回数が多すぎるようで、前述の例外が発生するようです。ロックを解除していますか?)、または w が何か間違ったことをしている場合は? 10.3.5 の Eclipse ツールには、まさにこのエラーに関する既知のバグがあることがわかります。
さらに、9.2.3 では問題がなかったようですが、10.3.5 では何が変わったのですか?