【AIによる回答
Alfrescoにおける「Error during run as wrapped exception」は、主にJavaのAuthenticationUtil.runAs()メソッドを使用して、特定のユーザー(システムまたは管理者など)の権限でコードを実行しようとした際に発生する一般的なランタイム例外です。このエラー自体は症状であり、その背後に根本的な原因(原因となる例外)が存在します。主な原因と対策は以下の通りです。主な原因
- 認可・権限不足 (Access Denied):
runAsで使用しているユーザーが、目的のデータ(ノード、プロパティ)にアクセスする適切な権限を持っていない。特に管理者ユーザー(admin)を想定している場合に発生しやすい。- メモリ不足 (Java Heap Space):
- 大規模なデータ処理中にヒープ領域が不足し、エラーが発生する。
- データベース接続の枯渇:
- クラスター環境などで通信タイムアウトが発生し、データベースのコネクションプールが枯渇している。
- テンプレート処理エラー:
- Webスクリプトのテンプレート(FreeMarker)内で、無効なアカウントや破損したオブジェクトを参照している。
- 不適切な
runAsの実装:
runAs内のタスクが正しく完了していない(特に非同期処理やトランザクションの未コミット)。対策と解決策
- 権限の確認:
runAsで指定しているユーザーを確認してください。必要に応じて、管理者権限を持つシステムユーザーでラップします。java// 例: 管理者システムユーザーとして実行 AuthenticationUtil.runAsSystem(new AuthenticationUtil.RunAsWork<Void>() { @Override public Void doWork() throws Exception { // ここに処理を記述 return null; } });- JVM設定の調整 (メモリ):
alfresco-global.propertiesまたは環境設定で、-Xmx(最大ヒープ)を増やし、NewSizeの設定を見直してガベージコレクションの効率を上げます。- トランザクション管理:
runAsブロックがトランザクション内で正しく動作しているか確認します。必要に応じてTransactionServiceを使用してトランザクションを明示的に開始・コミットします。- ログの確認:
alfresco.logを確認し、”Caused by:” の後に続く実際の例外(AccessDeniedException、OutOfMemoryErrorなど)を特定します。このエラーは特に、カスタムバックエンドのJava Webスクリプトやルールアクションを開発・実行する際に発生しやすい傾向にあります。
Re: ‘Wrapped Exception (with status template)…’ … – Page 2 – Hyland Connect – 194855
