今後は仕事上のメモも載せることにしました。
TEST環境のWAS君がエラー吐きまくり。
恐らく何らかの影響で、org.apache.struts.action.ActionServletが正常にロードされてない可能性が大。
-----------------------------------------------------------
後日談
原因は以外に身近なところにありました。
WebSphere Application Server V5.0で外部ライブラリーを使用する際の考慮点
http://www-6.ibm.com/jp/software/websphere/developer/tecflash/10.html
前からチラチラと言われてはいましたが、まさか自分の身に降りかかろうとは…。要はWAS V5.0では、WAS V5.0自身が出力する各種ログのために、commons-loggingインターフェースに対応するTrLogというLoggerを予め保有しているのです。
この為、格段の指定が無いとユーザー・アプリケーションにおいてもTrLogが使用されてしまい、Log4J等のcommons-loggingに対応するLoggerを使用できないというわけです。
これによって、Servletがロードできずエラーを吐いていたのです。WASのLoggerはこんなところにあります。
この場合は、[AS_ROOT]/classesか[AS_ROOT]/libを先にクラスロード時に読んでもらわないことにはにっちもさっちもいかない(古い?)ので、とりあえず、APサーバのクラスローダー設定を「PARENT_LAST」(親が最後に指定)し、パスが確実に通っている場所(WEB-INF/classes)で、
ってな感じでプロパティファイルを指定したところ、すんなり動きました。要はLoggerのFactoryをLog4Jのありものに変えてしまったわけです。中身は一緒なんだからOKでしょってわけで。
かなりやられました。
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0
(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance
(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
(・・・以下省略)
TEST環境のWAS君がエラー吐きまくり。
恐らく何らかの影響で、org.apache.struts.action.ActionServletが正常にロードされてない可能性が大。
-----------------------------------------------------------
後日談
原因は以外に身近なところにありました。
WebSphere Application Server V5.0で外部ライブラリーを使用する際の考慮点
http://www-6.ibm.com/jp/software/websphere/developer/tecflash/10.html
前からチラチラと言われてはいましたが、まさか自分の身に降りかかろうとは…。要はWAS V5.0では、WAS V5.0自身が出力する各種ログのために、commons-loggingインターフェースに対応するTrLogというLoggerを予め保有しているのです。
この為、格段の指定が無いとユーザー・アプリケーションにおいてもTrLogが使用されてしまい、Log4J等のcommons-loggingに対応するLoggerを使用できないというわけです。
これによって、Servletがロードできずエラーを吐いていたのです。WASのLoggerはこんなところにあります。
ws-commons-logging.jar
+commons-logging.properties
+com.ibm.ws.commons.logging
+TrLog.class
+TrLogFactory.class
この場合は、[AS_ROOT]/classesか[AS_ROOT]/libを先にクラスロード時に読んでもらわないことにはにっちもさっちもいかない(古い?)ので、とりあえず、APサーバのクラスローダー設定を「PARENT_LAST」(親が最後に指定)し、パスが確実に通っている場所(WEB-INF/classes)で、
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
ってな感じでプロパティファイルを指定したところ、すんなり動きました。要はLoggerのFactoryをLog4Jのありものに変えてしまったわけです。中身は一緒なんだからOKでしょってわけで。
かなりやられました。