1

weblogic-appliations.xml にリスナー「ADFApplicationStateListener」を追加した後、NoClassDefFoundError が発生する。

以前の weblogic-applications.xml にはリスナー「ADFApplicationLifecycleListener」があります。このリスナーを使用してアプリケーションをデプロイできます。しかし、以下のリンクにあるJDeveloperドキュメントの「カスタムADFアプリケーションのデプロイメント要件」セクションで指定されている命令に従って、「ADFApplicationStateListener」リスナーを使用して構成しました。
http://www.oracle.com/technetwork/developer-tools/jdev/documentation/121200-rn-1917713.html

このエラーを解決するにはどうすればよいですか?

ありがとう、
ゴパル。

Caused by: java.lang.NoClassDefFoundError: weblogic/application/ApplicationStateListener
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.FilteringClassLoader.findClass(FilteringClassLoader.java:101)
        at weblogic.utils.classloaders.FilteringClassLoader.loadClass(FilteringClassLoader.java:86)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at weblogic.application.internal.flow.BaseLifecycleFlow$CreateListenerAction.run(BaseLifecycleFlow.java:140)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.application.internal.flow.BaseLifecycleFlow$BaseAction.invoke(BaseLifecycleFlow.java:104)
        at weblogic.application.internal.flow.HeadLifecycleFlow.createListener(HeadLifecycleFlow.java:117)
4

1 に答える 1

2

ApplicationStateListener は、次のバグ修正の一部として Weblogic サーバーに導入されました:-

ここでのバグは、weblogic サーバーでアプリケーションを停止しているときに、ADF リソースをクリーンアップするためのコールバックがないことです。実際には ApplicationLifecycleListener の postStop() メソッドは、アプリケーションの削除またはアンデプロイ中にこれを行います。

ただし、アプリケーションの再起動のみが必要な場合、つまり、アプリケーションを停止して再度起動する(アンデプロイおよびデプロイする必要がない)場合、ADF MDS関連のリソースのクリーンアップに対するコールバックはありません。そのため、ApplicationStateListener が導入され、アプリケーションの停止中にリソースをクリーンアップするためのコールバックが提供されます。

私の Weblogic サーバー (バージョン 10.3.6.0) には、上記のバグ修正を含むパッチ (パッチ 56MM) が適用されていません。

したがって、ApplicationStateListener を続行する場合は、パッチを適用する必要があります。それ以外の場合は、ApplicationLifecycleListener を続行する必要があります。

于 2013-09-18T10:41:24.420 に答える