- PR -

tomcat4.1.27のSSL対応時エラー

1
投稿者投稿内容
narucissus
会議室デビュー日: 2003/07/25
投稿数: 11
投稿日時: 2003-11-22 13:15
いつも参考にさせていただいています。

Tomcat上で動かしていたWEBアプリをSSL対応にしたのですが、
致命的なエラーが発生して止まってしまい困っています。
JDKはj2sdk1.4.2を使用しているのでJSSEの追加などはしていません。
tomcatは4.1.27を使用、Struts 1.1で開発をしています。
ブラウザは、WindowsXPからIE6とOpera7.11、Red Hat 8.0から
Opera 7.11とMozilla 5.0でアクセスを試みました。

https://<ホスト名>:8443/myapp/のようにアクセスをすると、
何回かは(セキュリティの警告画面の後)正しくレスポンスを得ることができるのですが、
一度このエラーが発生してしまうとそれ以降は何度やってもだいたい
HTTP Status 500(Internal Server Error)が返ってきます。

$CATALINA_HOME/logs/stderr.logを参照して発生したクラス名とメソッドが分かるので、
「Http11ConnectionHandler processConnection」をキーにしてgoogleで
調べてみたところ、海外の記事ですが、これはバグであるとか
tomcatをバージョン5にしたら解決したとかいう記事を見ることはできましたが、
こうすれば解決できるというような情報は発見できずにいます。
理由も分からずに「じゃぁtomcat5.0.xにすればいいや」というのでは
あまり納得もいきませんし、正直環境を変更するのは好ましくありません。

どなたかこのエラーに関する情報をお持ちでしたらご教授ください。

------------------------------stderr.logから抜粋------------------------------

2003/11/22 12:39:09 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler processConnection
致命的: リクエストを読み込み中のエラーですが、無視されました
org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Jdk14Logger does not implement Log
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:532)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
at org.apache.tomcat.util.net.jsse.JSSESupport.<init>(JSSESupport.java:87)
at org.apache.tomcat.util.net.jsse.JSSE14Support.<init>(JSSE14Support.java:99)
at org.apache.tomcat.util.net.jsse.JSSE14Factory.getSSLSupport(JSSE14Factory.java:84)
at org.apache.tomcat.util.net.jsse.JSSEImplementation.getSSLSupport(JSSEImplementation.java:118)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:385)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)
Caused by: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Jdk14Logger does not implement Log
at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:416)
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)
... 11 more
Caused by: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Jdk14Logger does not implement Log
at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:412)
... 12 more
MM
会議室デビュー日: 2003/06/07
投稿数: 9
投稿日時: 2003-11-23 12:49
Google よりも先に Bug Database を確認するのがよいと思います。
http://jakarta.apache.org/tomcat/bugreport.html
#22701 を参照してください。
narucissus
会議室デビュー日: 2003/07/25
投稿数: 11
投稿日時: 2003-11-23 16:14
> Google よりも先に Bug Database を確認するのがよいと思います。
> http://jakarta.apache.org/tomcat/bugreport.html
> #22701 を参照してください。

Bugzillaというものの存在は知っていましたが実際に見たことがありませんでした。
確かにここを先に参照するのが正当ですね。ありがとうございます。

Bug Databaseを読んだ結果、以下のように判断しました。

1.tomcatとcommons-loggingに関する問題である。(log4jではない)
 ロガーは使用していましたがj2sdk1.4.2のLogging APIを
 直接使用していたし、僕の場合はlog4jもcommons-loggingも関係ありません。

2.tomcat 4.1.27のJSSESupport.javaに問題がある。
 最新の4.1.x系(4.1.29が現時点最新)または5.0.x系では
 そのバグが改善されている。

以上の結果をふまえて、やはりバージョンアップが妥当だと判断しました。
(環境を変更するのは好ましくありませんとか言っておきながらなんですが....)
実際に同じ環境でtomcatのみ4.1.29に置き換え同様のアクセスをしてみたところ
以前のような致命的エラーは起こらなくなり、正常に動作するようになりました。

MMさんありがとうございました。

#なぜか4.1.27ではちゃんと表示されていたHTMLが4.1.29では
#文字化けするようになってしまった....バージョンアップの副作用か?

[ メッセージ編集済み 編集者: narucissus 編集日時 2003-11-23 16:32 ]
1

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