Glassfish v3 Prelude で encodeURL が動作しない? [NT]
DoCoMo の iモードなど Cookie が使用できないときにセッションを維持させるためには、全てのリンクにセッション ID を埋め込む必要がある。 Servlet の場合 encodeURL を利用すれば良い。
encodeURL が動作しないように見えたのは、Cookie が利用できるか否かの判定ができていなかったからのようだ。
Cookie が利用できるか否かは Servlet Container が自動的に判定すると思っていたのだが、Glassfish v3 Prelude ではうまくいかなかった。
Glassfish v3 Prelude で Cookie を使用しない設定は、sun-web.xml(このファイルは web.xml と同じディレクトリに配置する) で
<?xml version="1.0" encoding="UTF-8"?>
<sun-web-app>
<session-config>
<session-properties>
<property name="enableCookies" value="false" />
</session-properties>
</session-config>
</sun-web-app>
と設定すればよい。このようにすると、Cookie が使用できる環境であっても使用しなくなる。
Nabble - java.net - glassfish users - No SessionID で Cookie とセッションについて取り上げられている。それによると、特に設定しなくても、既定で必要なプロパティが true になっているから、自動的に判定してくれると思うのだけれど...
glassfish-2 氏によると
V2.1
- automatically detection of url rewrite or cookie is not possible anymore
- only url rewriting or only cookie is possible definend in sun-web.xml
- have to add enableCookies=false to support all client requests
(中略)
V3
- automatically switching is possible again
- therefore its neccessary to remove enableCookies=false setted in V2.1 to get the default behaviour back
とある。つまり、v2.1では Cookie を使用できるか否かの判定は自動では出来なかったが、v3 では可能になったと読める。
もしかして、 Glassfish v3 Prelude ではまだ無理?
Nabble - java.net - glassfish users - No SessionID での話を、私はちゃんと理解できていないので、間違ってるかもしれないけど。
コメント 0