- PR -

サーバリブートで一部機能が動作しなくなってしまいました。

1
投稿者投稿内容
prepisu
会議室デビュー日: 2006/01/30
投稿数: 9
投稿日時: 2006-05-30 11:53
こんにちは、
サーバをリブートしたらリブート前まで動作していた
アプリケーションの一部機能が動作しなくなり困っております。

経緯をお話しすると長くなってしまい恐縮なのですが、
javaでjasperReportを使用して
帳票出力するアプリの動作する環境を構築しております。

サーバをリブートする前までは
動作していた帳票出力処理ですが、
リブート後に下記のエラーが発生して出力が出来なくなって
困っております。

■環境
OS:Redhat Enterprise AS 2.1
Java:1.4.2_03
その他:tomcat4.1.30
apache1.3.23
jasperReport0.5.2
Struts1.1

■エラーが発生するまでの手順
@サーバリブート
Aapache,tomcat起動
Bアプリケーションにて帳票出力
C下記のエラーが発生
HTTP Status 500 -

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: サーブレットの実行により例外を投げました
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:324)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:395)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:673)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:615)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:786)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)


root cause

java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:134)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
at dori.jasper.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:101)
at dori.jasper.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:208)
at dori.jasper.engine.fill.JRHorizontalFiller.<init>(JRHorizontalFiller.java:126)
at dori.jasper.engine.fill.JRHorizontalFiller.<init>(JRHorizontalFiller.java:118)
at dori.jasper.engine.fill.JRFiller.fillReport(JRFiller.java:145)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.java:350)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.java:290)

Dxinit &コマンドを実行しx-windowを起動
E再度アプリケーションにて帳票出力
F下記のエラーが発生
HTTP Status 500 -

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: サーブレットの実行により例外を投げました
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:324)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:395)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:673)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:615)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:786)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)


root cause

java.lang.NoClassDefFoundError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
at dori.jasper.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:101)
at dori.jasper.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:208)
at dori.jasper.engine.fill.JRHorizontalFiller.<init>(JRHorizontalFiller.java:126)
at dori.jasper.engine.fill.JRHorizontalFiller.<init>(JRHorizontalFiller.java:118)
at dori.jasper.engine.fill.JRFiller.fillReport(JRFiller.java:145)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.java:350)
at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.java:290)

NoClassDefFoundErrorはクラスパスが無い為に
発生するエラーだと認識しております。
リブート前とリブート後で
CLASSPATHを修正してはいませんし、
念のためTomcatのWEB管理画面から
アプリを一度削除して再度warファイルを
インストールしてapache・tomcatを再起動しても
上記と同様にエラーになります。


どなたかお分かりになる方ご教授下さい。
宜しくお願いします。


koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-05-30 15:02
awtを使用するアプリケーションを使うときに、TomcatからXサーバにアクセスできないと、こういったエラーが発生します。
2回目以降にNoClassDefErrorが発生しますが、クラスパスの設定を間違えたから起きるわけではありません。

対策としては、以下の通りでしょうか。

・pjaを使う
http://www.tsuhtan.net/java/pja/

・headlessモードを使う
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3183&forum=12
prepisu
会議室デビュー日: 2006/01/30
投稿数: 9
投稿日時: 2006-05-30 18:03
koe様
返信ありがとうございます。

bash_profileに
export JAVA_OPS=-Djava.awt.headless=true
の記載をしていましたが、
JAVA_OPSではなくJAVA_OPTSに修正して
source ~/.bash_profile
を実行してアプリケーションを実行しましたが、
解決しません。

何かお心当たりはございますでしょうか?

以上宜しくお願いします。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-05-31 10:05
Tomcat実行時に環境変数JAVA_OPTSが評価されていないのかもしれません。
JAVA_OPTSの指定を書くファイルを、
(Tomcatをインストールしたディレクトリ)/bin/setenv.sh
にしてみましょう。

あと、Tomcatを起動する方法を詳しく書いてもらえると、もう少しわかるかもしれません。
/etc/rc???/に何を置いたとか、chkconfigで何をしたとか、コマンドラインで何を実行したとか、そういうのです。
prepisu
会議室デビュー日: 2006/01/30
投稿数: 9
投稿日時: 2006-05-31 16:54
Koe様、お世話になっております。

何とかリブート前と同じく
帳票出力させる事が出来ました。

■実施手順
Teratermより
init 3
を実行してCUIモードにする。
サーバのプロンプトで
startx &
を実行したところ帳票印字が可能になりました。

initxからstartxに変更したのはLinux初期インストール時は
startxのコマンドを使うらしいという情報を得た為です。
また、xinitを使用するには「sample.xinitrc」 or 「system.xinitrc」を、
あらかじめ、自分のディレクトリに.xinitrcとしてコピーしておく必要があるらしい
と聞いた為です。

お付き合いくださいまして、
ありがとうございました!!!
1

スキルアップ/キャリアアップ(JOB@IT)