小向さん、
環境を作って確認したのですが、cookie を無効にした場合、
たしかに、GF v2.1.1でも現象でますね。
大変失礼いたしました。少し調べてみます。
寺田
Yoshio Terada さんは書きました:
> 小向さん
>
> GlassFish のどちらのバージョンをご使用頂いているか
> わからないのですが、仮に最新のバージョンをご使用
> 頂いていないのであれば、GlassFish v2.1.1で試してみて
> 頂けないでしょうか。
>
> GlassFish v2.1.1 のダウンロード
> Sun 製品版:
> https://glassfish.dev.java.net/downloads/v2.1.1-final.html
> GlassFish OSS 版:
> http://www.sun.com/software/products/appsrvr/get_it.jsp
>
> 詳細:
> **********************************************************************
> GlassFish V2
> Normally GlassFish 2 encodes session id to the URL automatically, if
> the browser does not support cookies. Additional it is possible to set
> the property enableCookies to never or always append the session id to
> the URL.
> But this property setting can be confusing, because of bug with newly
> created sessions [1]. And also the property enableURLRewriting is not
> working as expected.
>
>
> GlassFish V2.1
> GlassFish 2.1 fix this unexpected behaviour and ensures for all cases,
> that setting enableCookies to true only stores the session id in the
> cookie or false only encode session id to the URL.
> As this version does also not support enableURLRewriting, the
> automatic handling of the session id is not possible anymore.
> So if your application should support all clients, even those which do
> not accept cookies, you must add the following to the sun-web.xml file
> [2].
> <session-config>
> <session-properties>
> <property name="enableCookies" value="false" />
> </session-properties>
> </session-config>
> The problem now is that all application URLs contain the session id,
> which means:
> ▪ User create bookmarks including the session id
> ▪ Also when a webmaster add a backlink in his site
> ▪ Crawling services save the URLs always with session id
>
>
> GlassFish V2.1 Patch
> If you want to avoid these problems and still run your application
> with automatically handling of the session id, you can use the
> unoffical Patch [3] provided by Jan Luehe [4], which backports
> GlassFish 3 support for enableURLRewriting to the current version.
> Just put this jar somewhere in the file system and define the path in
> the Attribute classpath-prefix of the Tag java-config [5].
>
>
> GlassFish V2.1.1
> The problem does not occur in this version anymore. The automatic
> handling of the session id works even without patch and without
> special properties as usal.
>
>
> GlassFish V3
> GlassFish 3 provides better control of session id handling, because it
> supports enableCookies and enableURLRewriting [6]. As default both are
> true, so for automatic detection of cookie based or url based session
> id is no entry in sun-web.xml neccessary.
>
> Conclusion
> I prefere the solution of automatic url rewriting, even for SEO
> applications. The site I-Coding itself is with serveral keys in
> Googles top 10, even though it uses JSF and Session IDs. Furthermore
> webmasters or developers can also submit application URLs with an
> sitemap file to the main search engines.
> Resources
>
>
> [1] Issue 3972
>
> [2] /WEB-INF/sun-web.xml
>
> [3] Patch for GlassFish V2.1
>
> https://glassfish.dev.java.net/nonav/issues/showattachment.cgi/2265/patch.jar
>
>
> [4] Jan Luehe's Blog
>
> [5] /domains/domain1/config/domain.xml
>
> [6] Issue 4394
>
>
> On 2009/12/24, at 18:52, 小向 政廣 wrote:
>
>> 始めまして、小向と申します。
>>
>> GlassFish 2.1 でクラスタリングを行なおうとしていますが、ここ1ヵ月は
>> まってしまっており
>> 困っております。
>>
>> どなたかお分かりになる方がいらっしゃれば、ご教授をお願い致します。
>>
>> ■構成・確認方法
>> Linuxサーバ2台で、それぞれapache2.2.13、GlassFish2.1をインストール
>> し、GlassFish側
>> でクラスタ構成を行い動作確認をしました。
>>
>> apacheはmod_proxyを使い、apache2台から、GlassFishの2インスタンスにリ
>> クエストを割り
>> 振るという構成にしております。
>>
>> 確認したアプリは、GlassFishについているサンプルclusterjspと同じよう
>> に、画面で登録し
>> た値をセッションに追加し続けていき、それをそのまま画面に表示するとい
>> うシンプルなもの
>> です(ただし、jspではなくサーブレット)。
>>
>> GlassFishインスタンス1に処理が割り振られたのを確認してから、GlassFish
>> インスタンス1
>> を落とし、ブラウザの画面をリロード、GlassFishインスタンス2にリクエス
>> トが振られ、登録
>> した内容が保持されたことを確認する、という方法でセッションの引継ぎを
>> 確認しました。
>>
>> ■状況
>> cookieが使えるクライアントからアクセスして動作確認した場合は問題がな
>> かったのですが、
>> cookieが使えないクライアント(=携帯)からアクセスして、動作確認する
>> と、クラスタ間でセッ
>> ション情報が引き継がれないという状態になっております。
>>
>> cookieが使えないクライアント用に、アプリも若干修正、セッション保持の
>> ためjsessionidを使
>> うようにしています。
>>
>> GlassFish 2.1ではバグがあるらしく、cookieなしの場合は、そのままでは動
>> かなかったので
>> sun-web.xmlに以下の設定を追加しています。
>>
>> <session-config>
>> <session-properties>
>> <property name="enableCookies" value="false" />
>> </session-properties>
>> </session-config>
>>
>> apacheはmod_proxyを使っており、以下のように設定しました。
>>
>> ProxyPass /xxx balancer://clusterXxx/xxx stickysession=JSESSIONID
>> ProxyPreserveHost On
>> <Proxy balancer://clusterXxx >
>> BalancerMember http://yyy01:23151loadfactor=1 route=xxx11
>> BalancerMember http://yyy02:23151loadfactor=1 route=xxx21
>> </Proxy>
>>
>> GlassFishのソースはダウンロードしてきて見ているのですが、問題の箇所が
>> どこなのか検討
>> がつかず・・・
>>
>> そもそもcookieが使えないとクラスタリングできない、というオチな気もす
>> るのですが、きちんと
>> 説明できておらず・・・
>>
>> どなたかお分かりになる方がいらっしゃいましたら、ご教授よろしくお願い
>> 致します。
>>
>>
>