対象となるクラスが、そのクラスを参照しているクラスから参照できなくなっている
可能性があります。WebOTXでは、Jakarta Commonsのライブラリを”WebOTX/lib”に格納しています。
それらWebOTXで格納しているクラスはWebアプリケーションのクラスローダより上位のクラスローダで
ロードされており、WebアプリケーションのWEB-INF/libのクラスがクラスローダの上下関係で
参照できなくなっている可能性があります。
もしくは、対象のクラスが、javaxのパッケージの場合には、Servletの仕様により、WEB-INF配下から
読み込めないことがあります。これは、Servlet仕様での勧告(javaxなどのJ2SE,J2EEクラスを
WAR内のライブラリでオーバライトさせるべきでない、という仕様のためです。
WebOTXで同梱しているライブラリとクラスのロードについては [マイグレーションガイド > 2. マイグレーションアシスタントを利用しないマイグレーションガイド] の [2.2.4. 同梱するライブラリ] と [2.2.5. クラスのロードについて]を参照してください。
クラスのロード処理を変更する
nec-web.xmlのdelegate指定を変更することにより、クラスのロード処理を変えて、アプリケーションの
動作を確認してください。
もしくは、WEB-INF/libにあるWebOTXで同梱されているライブラリ(例えばcommons-logging*.jar
など)を削除して、アプリケーションの動作を確認してください。
nec-web.xmlのdelegate指定の変更は、次章の[配備でエラーが発生
する]を参照してください。
javaxパッケージをWEB-INF配下から読み込み利用可能にする
javaxパッケージは、WEB-INF配下から読み込みません。
javaxパッケージを ${INSTANCE_ROOT}/lib 配下に移動するか、nec-web.xmlにoverrideablejavaxpackagesのを設定して利用可能にする必要があります。
nec-web.xml設定方法
<?xml version="1.0" encoding="UTF-8"?> <nec-web-app> : <class-loader delegate="false"> <property name="overrideablejavaxpackages" value="パッケージ名"/> </class-loader> :
パッケージ名はカンマ区切りで複数指定可能です。
補足としてprocessLauncher.xmlにoverrideablejavaxpackagesを設定をすることで全Webアプリケーションに対しての設定を行うこともできます。 ${AS_INSTALL}/lib/processLauncher.xml を次のように編集します。
processLauncher.xml設定方法
<?xml version="1.0"?> <processes> <process name="webotx-server"> : <sysproperty key="com.nec.webotx.enterprise.overrideablejavaxpackages" value="javax.help,javax.portlet,パッケージ名"/> :
パッケージ名はカンマ区切りで複数指定可能です。
設定後はドメインを再起動してください。
overrideablejavaxpackagesで指定したパッケージはチェックするクラスがそのパッケージ名で
始まっていれば対象となります。
ですので、javax.xml.wsを指定していただければサブパッケージのjavax.xml.ws.handlerやjavax.xml.ws.handler.soap等も
対象となります。個別に指定する必要はありません。