HTTPリクエストパラメータ数/ヘッダ数の制限
V10.1以前のJava EE 5ではHTTPリクエストパラメータ数は特に制限されませんでしたが、V11以降のJava EE 5及びJava EE 7では10000個に制限されるようになりました。なお、上限値はネットワーク設定の定義項目の「HTTPリクエストパラメータ数の最大値」で変更可能です。
また、Java EE 5ではHTTPリクエストヘッダ数は特に制限されませんでしたが、Java EE 7では100個に制限されるようになりました。なお、上限値はネットワーク設定の定義項目の「リクエストヘッダ数の上限値」で変更可能です。
HTTPレスポンスに設定するヘッダ数の制限
Java EE 5ではHTTPリクエストへのレスポンスに設定するヘッダ数には制限がありませんが、Java EE 7では100個までに制限されるようになりました。なお、上限値はネットワーク設定の定義項目の「レスポンスヘッダ数の上限値」で変更可能です。
キープアライブのタイムアウト値
Java EE 7のキープアライブのタイムアウトを設定する以下の定義項目は、キープアライブ以外のタイムアウト値としても使用されます。詳細は「HTTP接続のタイムアウト」を参照してください。
${clusterName_instanceName_configName}.network-config.protocols.protocol.${protocol-name}.http.timeout-seconds |
本定義項目は以下の3つのタイムアウトとして設定されます。
キープアライブ:Webコンテナがレスポンスを返却後、次のリクエストが来るまでの間キープアライブ接続を維持する時間
HTTPの接続:WebコンテナでHTTP接続後、リクエストがスレッドプールのキューに格納されるまで接続を維持する時間
HTTP接続キュー:Webコンテナでスレッドプールのキューに格納後、リクエストがスレッドで処理を開始されるまで接続を維持する時間
キープアライブを無効にするときは、キープアライブのタイムアウト値を変更する必要はなく、初期値のままで問題ありません。
welcome fileに該当するファイルがない場合のディレクトリ、ファイル一覧の表示
welcome fileに該当するファイルが存在しない場合のディレクトリ配下のディレクトリやファイルの一覧の表示について、Java EE 5とJava EE 7とで違いがあります。
Java EE 5では、welcome file(省略時はデフォルト設定)に該当するファイルがない場合は、Interstage Web application deployment descriptor(sun-web.xml)でファイル一覧を有効にしているかによって、ステータスコード404(ファイルが存在しない)、またはその実体となるディレクトリ配下のディレクトリやファイルの一覧が表示されます。
Java EE 7では、welcome file(省略時はデフォルト設定)に該当するファイルがない場合でも、実体となるディレクトリ配下のディレクトリやファイルの一覧は表示しません。
「コンテキストの共有」のデフォルト値
他のWebアプリケーションへのディスパッチを許可するかを定義する「コンテキストの共有(crossContextAllowed)」のデフォルト値がJava EE 5とJava EE 7とで異なります。
Java EE 5では、以下で設定するコンテキストの共有の値がデフォルトで無効(許可しない)となります。
Interstage Web application deployment descriptor(sun-web.xml)の<sun-web-app><property>タグ
プロパティ名:crossContextAllowed
Java EE 7では、以下で設定するコンテキストの共有の値がデフォルトで有効(許可する)となります。詳細は、「glassfish-web-app」を参照してください。
Interstage Web application deployment descriptor(glassfish-web.xml)の<glassfish-web-app><property>タグ
プロパティ名:crossContextAllowed
ServletRequest#getLocalName()メソッド
Servlet APIである「ServletRequest#getLocalName()」メソッドの復帰値について、Webサーバと連携しない場合にJava EE 5とJava EE 7で違いがあります。
hostsファイルが以下のような場合、Java EE 5では、「127.0.0.1」が取得されますが、Java EE 7では、「localhost」が取得されます。
127.0.0.1 localhost |
Java EE 7で、IPアドレスを取得する場合は、「ServletRequest#getLocalAddr()」メソッドを利用してください。
レスポンスヘッダに指定する文字コード
Java EE 7では、印字可能なASCIIコード範囲外の文字をHTTPレスポンスヘッダに設定すると、半角空白に置き換えられてクライアントに返却されるようになりました。
そのため、HTTPレスポンスヘッダにContent-Dispositionヘッダを設定することによりファイルのダウンロードを行われる場合は、レスポンスヘッダのURLエンコードが必要です。詳細は、「レスポンスヘッダに指定する文字コード」「日本語などのASCIIではないファイル名のファイルをダウンロードする場合」を参照してください。
誤りのあるWebアプリケーションの配備・起動
誤りのあるアプリケーションを配備・起動する場合、Java EE 5では配備・起動に成功しても、Java EE 7では配備・起動に失敗し、Webアプリケーションにアクセスできない場合があります。出力されたメッセージを参照し、Webアプリケーションを正しく修正してください。
WEB-INF配下にXMLの文法に誤りのあるTagLibraryDescriptorファイルが存在した場合
Java EE 5は、Webアプリケーションの配備、起動は成功します。
Java EE 7は、Webアプリケーションの配備に失敗、またはWebアプリケーションの起動に失敗します。
Webアプリケーション環境定義ファイルの<listener-class>タグに存在しないクラスを指定した場合
Java EE 5は、Webアプリケーションの配備、起動は成功します。アプリケーションにアクセスした場合、ステータスコード503が返却されます。
Java EE 7は、Webアプリケーションの配備に失敗、またはWebアプリケーションの起動に失敗します。アプリケーションにアクセスした場合、ステータスコード404が返却されます。
HttpSessionのgetAttribute(null)呼出し
Java EE 5ではNullPointerExceptionがスローされます。
Java EE 7ではnullが返却されます。
web.xmlの<security-constraint>タグ内の<auth-constraint>タグ内の<role-name>タグ
Java EE 5では、"*"を指定する場合、<security-role>タグに有効な<role-name>タグが定義されていなければリソースにアクセスできません。
Java EE 7では、"*"を指定する場合、<security-role>タグに有効な<role-name>タグが定義されていなければ認証が行われません。そのため、web.xmlの<security-role>タグには有効な<role-name>タグを指定してください。
ネットワークの共有資源へアクセスする場合
ネットワークの共有資源へアクセスする場合、再度設定が必要になります。詳細は「3.1.12 ネットワークの共有資源へアクセスする場合の環境設定」を参照してください。