Webコンテナを利用する際の注意制限事項について説明します。
ログレベルを "DEBUG" に変更すると、JSP処理コンポーネントが処理するデータをログに記録します。障害調査などを目的としたログであるためブラウザから渡されてきたそのままのデータを記録します。このため、JSP でリクエストパラメータ取得時の文字コードを設定する前にリクエストパラメータを分解します。この結果、文字コードの設定が効かずアプリケーションで文字化けが発生します。
本ログレベルを上げるのは、JSPにおいてリクエストの内容がどのようになっているかを確認する時だけにしてください。そして、内容を確認した後は、必ず "CONFIG" レベルに戻してください。
<Object name="servlet"> ObjectType fn="force-type" type="text/html" Service fn="NSServletService" </Object>
<Object name="j2ee"> Service fn="service-j2ee" method="*" </Object>
# TM_WS_PLUGIN_INIT-start
Init fn="load-modules" funcs="jk_init,jk_nametrans,jk_service" shlib="${AS_INSTALL}/bin/<NSAPIモジュール名>"
Init fn="jk_init" worker_file="${INSTANECE_ROOT}/config/WebCont/workers.properties" worker_mount_file="${INSTANECE_ROOT}/config/WebCont/uriworkermapNS.properties-auto" log_level="error" log_file="${INSTANECE_ROOT}/logs/nsapi.log"
# TM_WS_PLUGIN_INIT-end
# TM_WS_PLUGIN_MAP-start
NameTrans fn="jk_nametrans" name="servlet"\
# TM_WS_PLUGIN_MAP-end
# TM_WS_PLUGIN_EXEC-start
<Object name="servlet">
ObjectType fn=force-type type=text/html
Service fn="jk_service" worker="ajp13" path="/*"
</Object>
# TM_WS_PLUGIN_EXEC-end
# TM_WS_PLUGIN-start
include "${INSTANECE_ROOT}/config/WebCont/mod_jk-22.conf-auto"
# TM_WS_PLUGIN-end
Init fn="load-modules" funcs="jk_init,jk_service" shlib=...
Init fn="jk_init" worker_file=...
NameTrans fn="assign-name" from=...
<Object name="servlet"> ObjectType fn=force-type type=text/html Service fn="jk_service" worker="ajp13" path="/*" </Object>
PathCheck fn="find-index" index-names="index.html,home.html,index.jsp"

図3.1-1
REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\NEC\WebOTX WebContainer] "PathName"="C:\\WebOTX\\"
>chmod o+w ${INSTANECE_ROOT}/logs/webcontainer
otxadmin> create-jvm-options -Dwebotx.webcontainer.serverconfig.OMlistener.OutputConfAuto=falseまた、上記オプションの設定有無に関わらず、ファイルが存在しない場合は自動で作成されます。
外部Webサーバ連携時、JkMountディレクティブの記述の仕方によってはリクエストが正常に振り分けられない事があります。
外部Webサーバと連携している時、JkMount の記載方法によっては正常に振り分けられません。
例えば、次のような場合です。
JkMount /sample/* ajp13
JkMount /sample/aaa ajp13
上記の記述では、どちらの条件にもマッチするため正常に振り分けられません。
複数のアプリケーションを異なるドメインに配置している時(例えば /sample/aaa と /sample/bbb を異なるドメインに配備した場合)、次のような設定をしても正常に振り分ける事はできません。
JkMount /sample/* ajp13
grant {
permission java.io.FilePermission
"${com.nec.webotx.instanceRoot}${/}applications${/}j2ee-modules${/}fileupdownload${/}-", "read,write,delete";
};
ブラウザ Webコンテナ 1) Cookie有効 セッションIDの管理-ON → Cookieによってセッション管理される 2) Cookie有効 セッションIDの管理-OFF → Cookieによってセッション管理される 3) Cookie無効 セッションIDの管理-ON → URLによってセッション管理される 4) Cookie無効 セッションIDの管理-OFF → URLによってセッション管理される
"Internal server error. reason: JNDI information get error: error in opening zip file" |
"-Xss512k" |
<jsp-config>
<property name="compilerSourceVM" value="1.4"/>
取得する XML ファイルが web.xml で定義された <security-constraint> の範囲外にある場合、 checkURLPatternAfterMatching の設定により、この現象を回避できることがあります。 詳細は[ リファレンス集 ドメイン構成・環境移行編 > 2. 他APサーバ(Tomcat)からWebOTXへの移行ガイド > 2.3. 移行作業 > 2.3.6. WebOTX独自のWebアプリケーション配備記述子(nec-web.xml) > 2.3.6.5. no-cache の設定 ] を参照してください。
コンテキストパス(http://<ホスト名>:<ポート番号>/<ContextPath>/<ServletPath>/ の <ContextPath> の部分)に、例えば "/sample/ap" のように "/" を含む場合、一部機能が利用できません。
利用できないのは次の機能です。
a) セッションレプリケーションLoadModule rewrite_module "/opt/WebOTX/WebServer2/modules/mod_rewrite.so"
RewriteEngine on RewriteRule ^/samplep/ap/(.*)$ /sample_ap/$1 [PT,L] RewriteRule ^/sample_ap/(.*)$ /sample/ap/$1 [R,L]
コンテキストパスに "/" を含む URL にも Cookie を送付するよう明示的に指定します。設定場所は、WebOTX 独自のWebアプリケーションの配備記述子である nec-web.xml です。このファイルに次のような記述を追加します。
<?xml version="1.0" encoding="UTF-8"?><nec-web-app>
<context-root>sample_ap</context-root>
<class-loader delegate="false"/>
<session-config>
<cookie-properties>
<property name="cookiePath" value="/sample/ap"/>
</cookie-properties>
</session-config>
</nec-web-app>
追記が終わったらWARファイルをアーカイブし直して配備します。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
:
<init-param>
<param-name>suppressSmap</param-name>
<param-value>true</param-value>
</init-param>
JSR-045デバッグ情報は、JSPコードとコンパイルしたclassファイルを関連付けるための情報です。
otxadmin> set server.web-container.property.j2ee-enabled=false otxadmin> set server.http-service.property.sso-enabled=false
RequestDispatcherクラスの forward メソッドを利用してリクエストの別のサーブレットに転送した場合に、レスポンスがflush(コミットされてクライアントに返却される)されるタイミングがV7.x と V8.x で異なります。
上記のように、V7.x では forward先サーブレットの処理が終了しforward元に処理が戻り forward元のリクエストの処理も完全に 終了してからレスポンスがflushされます。一方 V8.x は forward先サーブレットの処理が終了して forward元サーブレットに戻った時点でレスポンスがflushされます。
既定値では上記の動作ですが、設定により変更が可能です。設定方法は次の2通りです。
JavaVMオプションでは次のオプションを指定します。
com.nec.webotx.enterprise.forwardResponseFlushotxadmin> create-jvm-options -Dcom.nec.webotx.enterprise.forwardResponseFlush=true
nec-web.xmlでは次のプロパティで指定します。
<nec-web-app>
<context-root>コンテキストA</context-root>
<property name="forwardResponseFlush" value="true"/>
:
両方とも、true(V8.xの動作)/false(V7.xの動作)が指定可能です。規定値はV8.xの場合はtrue、V7.xの場合はfalseとなります。
JavaVMオプションの有効範囲は全Webアプリケーション、nec-web.xmlの有効反映はWebアプリケーション内です。両方指定された場合はnec-web.xmlでの指定が優先します。
※本設定はスタンダードモードでのみ有効です。アドバンスドモードでは常に V7.x の動作となります。