- - PR -
Weblogic起動時にエラーがでます
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-04-09 17:17
Weblogic 7.0.4でプロダクションモードで
warファイルをデプロイしようとすると wldomain.logに以下のログが出ました。 --------------------------------------------------------------- java.lang.NoClassDefFoundError: aaa/system/AAA at java.lang.Class.getMethod0(Native Method) at java.lang.Class.getMethod(Class.java:883) at weblogic.servlet.jsp.JspStub.isJSPClassStale(JspStub.java:246) at weblogic.servlet.jsp.Precompiler.compileOne(Precompiler.java:100) at weblogic.servlet.jsp.Precompiler.compile(Precompiler.java:55) at weblogic.servlet.internal.WebAppServletContext.precompileJSPs(WebAppServletContext.java:4267) at weblogic.servlet.internal.WebAppServletContext.precompileJSPs(WebAppServletContext.java:4260) at weblogic.servlet.internal.WebAppServletContext.prepareFromDescriptors(WebAppServletContext.java:1984) at weblogic.servlet.internal.WebAppServletContext.init(WebAppServletContext.java:1077) at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:1013) at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:599) at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:382) at weblogic.j2ee.J2EEApplicationContainer.prepareWebModule(J2EEApplicationContainer.java:1607) at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:739) at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:555) at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:1096) at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:764) at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:24) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:234) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:210) --------------- nested within: ------------------ weblogic.management.ManagementException: 149233 - with nested exception: [java.lang.NoClassDefFoundError: aaa/system/AAA] at weblogic.management.deploy.slave.SlaveDeployer.convertThrowable(SlaveDeployer.java:868) at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:1214) at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:764) at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:24) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:234) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:210) --------------------------------------------------------------- warファイルにはAAAというクラスは含まれていませんが、 デプロイする前の同じ名前のwarファイルには AAAが含まれていました。 Weblogicのコンソールで以前のwarファイルを削除し、 AAAが含まれていないwarファイルをデプロイするときにログがでました。 (英語の綴りが違っていたのでクラスの名前を変更してAAAは削除した)。 なぜ、AAAをコンパイルしようとしているのかと思ったのですが C:\\windows\\TEMP\\jsp_servlet\\_jsp C:\\windows\\TEMP\\jsp_servlet\\_aaa\\_jsp という2つのフォルダがあり、そのうちの\\_aaa\\_jspの方にAAAを参照するJSP が含まれていたのでこれがコンパイルされようとしたのではないか と思うのですが、jsp_servlet以下のクラスが全てコンパイルされるのでしょうか? あるいはもっと別の理由でエラーが発生しているのでしょうか? またweblogic.xmlは以下のようになっています。 <jsp-descriptor> <jsp-param> <param-name>compileCommand</param-name> <param-value>javac</param-value> </jsp-param> <jsp-param> <param-name>precompile</param-name> <param-value>true</param-value> </jsp-param> <jsp-param> <param-name>workingDir</param-name> <param-value>c:\\windows\\TEMP\\</param-value> </jsp-param> <jsp-param> <param-name>keepgenerated</param-name> <param-value>true</param-value> </jsp-param> <jsp-param> <param-name>pageCheckSeconds</param-name> <param-value>5</param-value> </jsp-param> </jsp-descriptor> |
|
投稿日時: 2004-04-09 23:41
JSPが実行されるまでの流れは理解されていますか? JSPからServletのコードが生成・コンパイルされて実行されます。 このことを踏まえて、weblogic.xmlの内容を見ればなぜかはわかるのではないでしょうか? weblogic.xmlの該当箇所のリファレンスはこちらです。 http://edocs.beasys.co.jp/e-docs/wls/docs70/webapp/weblogic_xml.html#840999 |
|
投稿日時: 2004-04-10 02:10
どうもJSPが実行されるまでの流れをよく理解できていないようです。
JSPからServletのコードがjsp_servletに生成されるのはなんとなく わかるのですが、コンパイルの対象が何かということが weblogic.xmlに書かれていないのでは?と思いました。 WeblogicのドキュメントのパラメータpackagePrefixのところに「すべての JSP ページがコンパイルされるパッケージを指定する」と書いてあるので、jsp_servlet以下のサーブレットを すべてコンパイルするということになるのでしょうか? 試しに、_aaa\_jspが存在しなかったテスト環境にも_aaa\_jspをコピーして Weblogicを再起動してみたのですが何もログが出ずに起動しました。 もうちょっと考えてみます。 |
|
投稿日時: 2004-04-10 11:21
そうですね、jsp_servlet以下のソースが全てコンパイルされると思います。 テスト環境で再現しない事について考えられる原因としては、 ・テスト環境のweblogic.xmlのprecompileがfalseになっている ・テスト環境のweblogic.xmlのworkingDirが異なっている ・テスト環境のWebモジュールには、クラスAAAが含まれている 等でしょうか。 |
|
投稿日時: 2004-04-10 16:35
WebLogic は JSP の更新チェックをする際に、JSP内で使われているクラスについても更新がないかチェックします。たとえ JSP に変更がなくても JSP が依存しているクラスに変更があれば JSP も再コンパイルする必要性があるからです。
で、このエラーはプリコンパイル時に JSP の依存しているクラスがパスに通っていなくて発生しているようです。 Webアプリケーションの WEB-INF/lib または WEB-INF/classes 以下に aaa.system.AAA ってクラスが存在するか確認してみてください。 |
1
