Webアプリケーションの配備でエラーが発生する場合、WebアプリケーションのWEB-INF/lib配下の ライブラリ(jar)が、WebOTXのライブラリと重複していることが原因と考えられますので、 1〜5に示す順番で対策を実施してください。
nec-web.xmlでのdelegate指定
nec-web.xmlでdelegateをtrueとする。delegateをtrueとすることにより、上位のクラスローダで
ロードされるクラスが優先され、ライブラリの重複による問題が回避できます。nec-web.xmlは、
配備時に自動生成されますが、配備前にWebアプリケーションのWEB-INFディレクトリ配下に
作成してください。作成時には、配備されたWebアプリケーションのnec-web.xmlを参考にしてください。
nec-web.xmlの定義例は次のようになります。
<?xml version="1.0" encoding="UTF-8"?> <nec-web-app xmlns="http://java.sun.com/xml/ns/j2ee"> <context-root>context_name</context-root> <class-loader delegate="true"/> </nec-web-app>
commons-logging*.jarをWebアプリケーションから取り出す
nec-web.xmlの定義変更だけでは問題が解決できない場合、commons-logging*.jarがWebアプリケーション
のWEB-INF/libに格納されている場合には、commons-logging*.jarを取り除いてください。
commons-logging*.jarはWebOTXのライブラリに含まれています。
xml-apis.jarをWebアプリケーションから取り出す
nec-web.xmlの定義変更だけでは問題が解決できない場合、xml-apis.jarがWebアプリケーション
のWEB-INF/libに格納されている場合には、xml-apis.jarを取り除いてください。xml-apis.jarはWebOTXの
ライブラリに含まれています。
javaxのクラスでエラーが発生した場合 Webアプリケーション内のjavaxクラスは、Webアプリケーションレベルではロードされません。 次の対処を行ってください。
nec-web.xmlにオーバライドを指定する
nec-web.xmlに次のoverrideablejavaxpackagesを指定します。
<?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等も
対象となります。個別に指定する必要はありません。
jarファイルを取り除いた、もしくは移動した後にクラスの参照に失敗するようになった場合
上位のクラスローダでロードされているクラスから、Webアプリケーション内のクラスを参照しようと
してエラーになっていると考えられます。
参照が失敗するようになったクラスを含むjarファイルを ${AS_INSTALL}/lib 配下に
格納してください。