HTTP 階段作業問題
建立或使用「超文字傳送通訊協定 (HTTP)」階段作業時,請使用問題的疑難排解資訊。
如果要檢視及更新這裡所討論的階段作業管理程式設定,請使用管理主控台。 選取管理問題應用程式的應用程式伺服器,然後在「其他內容」之下,選取 Web 儲存器,再選取 階段作業管理程式。
HTTP 階段作業未建立,或在要求之間遺失
- 確定已在「階段作業追蹤機制」內容下勾選 啟用 Cookie 勾選框。
- 請確定在您從中進行測試的瀏覽器上已啟用 Cookie ,或您的使用者從中存取應用程式的瀏覽器已啟用 Cookie。
- 檢查 SessionManager 上指定的 Cookie 網域 (如果要檢視或更新 Cookie 設定,請在 中,按一下 修改)。
- 例如,如果 Cookie 網域設為
.myCom.com
,則應該使用該網域名稱來存取資源。 範例: http://www.myCom.com/myapp/servlet/sessionservlet。 - 如果已設定網域內容,請確定它以點 (.) 開頭。 如果網域名稱不是以點開頭,則某些 Netscape 版本不接受 Cookie。 Internet Explorer 允許使用具有或沒有點的網域。 例如,如果網域名稱設為 mycom.com,請將它變更為 。mycom.com ,以便 Netscape 和 Internet Explorer 都允許使用 Cookie。附註: 當伺服器位於不同的主機時,請配置前端路由器 (例如具有外掛程式的 Web 伺服器) 或設定 Cookie 網域,以確保階段作業 Cookie 流向所有伺服器。
- 例如,如果 Cookie 網域設為
- 請檢查 SessionManager上指定的 Cookie 路徑。 請檢查問題 URL 是否在指定的 Cookie 路徑下階層式。 如果不正確,則為 Cookie 路徑。
- 如果設定 Cookie 經歷時間上限內容,請確定用戶端 (瀏覽器) 機器的日期和時間與伺服器的日期和時間相同 (包括時區)。 如果用戶端與伺服器的時間差異超過
Cookie 經歷時間上限
,則每次存取都會是新的階段作業,因為 Cookie 在存取之後到期。 - 如果您在企業應用程式內有多個追蹤階段作業的 Web 模組:
- 如果您想要在企業應用程式中的 Web 模組之間有不同的階段作業設定,請確定每一個 Web 模組指定不同的 Cookie 名稱或路徑,或
- 如果企業應用程式內的 Web 模組使用一般 Cookie 名稱和路徑,請確定所有 Web 模組的 HTTP 階段作業設定 (例如
Cookie 經歷時間上限
) 都相同。 否則, Cookie 行為無法預期,視建立階段作業的應用程式而定。 請注意,這不會影響 Web 模組個別維護的階段作業資料。
- 檢查瀏覽器與伺服器之間的 Cookie 流程:
- 在瀏覽器上,啟用
Cookie 提示
。 請按一下 Servlet ,並確定已提示 Cookie。 - 從瀏覽器存取階段作業 Servlet。
- 瀏覽器會提示輸入 Cookie; 請注意 jsessionid。
- 重新載入 Servlet ,如果傳送新的 Cookie ,請記下 Cookie。
- 請檢查階段作業追蹤,並尋找階段作業 ID ,然後追蹤執行緒的要求。 驗證階段作業在 Web 要求之間是否穩定:
- 尋找啟動階段作業要求的 getIHttpsession(...)。
- 尋找 Servlet 要求結束的 releaseSession(..)。
- 在瀏覽器上,啟用
- 如果您使用 URL 重新編寫,而不是 Cookie:
- 請確定應用程式的導覽路徑上沒有靜態 HTML 頁面。
- 已淘汰特性: WebSphere Application Server 7.0版中已淘汰使用 SSL ID 的階段作業追蹤。 您可以配置階段作業追蹤來使用 Cookie ,或修改應用程式來使用 URL 重新編寫。如果您使用 SSL 作為階段作業追蹤機制:
- 確定您已在 IBM® HTTP Server 或 iPlanet HTTP 伺服器上啟用 SSL。
- 如果您是在叢集 (多節點) 環境中,請確定您已啟用階段作業持續性。
HTTP 階段作業不是持續性
- 請檢查資料來源。
- 請檢查階段作業管理程式的持續性設定內容:
- 如果您想要利用階段作業持續性,請驗證「持續性」已設為 資料庫。
- 如果您使用 資料庫型 persistence:
- 請檢查在 SessionManager上正確指定資料來源的 JNDI 名稱。
- 請指定正確的使用者 ID 和密碼來存取資料庫。
請注意,必須在管理主控台中根據現有資料來源的內容來檢查這些設定。 階段作業管理程式不會自動為您建立階段作業資料庫。
- 資料來源應該是非 JTA ,例如啟用非 XA。
請檢查日誌,以取得適當的資料庫錯誤訊息。
- 使用 DB2®,對於非 4k 的列大小,請確定指定的列大小符合 DB2 頁面大小。 請確定已正確指定表格空間名稱。
- 如果您使用 記憶體型持續性 (僅適用於網路部署環境):
- 檢閱 記憶體至記憶體抄寫。
- 檢閱階段作業管理程式的內部抄寫網域內容。
階段作業在相同用戶端機器上的多個瀏覽器之間共用
此行為與瀏覽器相關。 瀏覽器供應商之間的差異也會隨著瀏覽器是作為新程序啟動,還是作為現有瀏覽器階段作業的子程序啟動 (例如在 Windows 上點擊 Ctl-N) 而改變。
如果使用 Cookie 作為階段作業追蹤機制,則階段作業管理程式的 Cookie 經歷時間上限內容也會影響此行為。 如果經歷時間上限設為某個正值,則所有瀏覽器實例都會共用 Cookie ,這些 Cookie 會在指定的經歷時間上限內持續保存至用戶端上的檔案。
在指定的階段作業逾時間隔之後,階段作業未立即失效
SessionManager 失效程序執行緒每隔 x 秒執行一次,使任何無效階段作業失效,其中 x 是根據階段作業管理程式內容中指定的階段作業逾時間隔來決定。 對於預設值 30 分鐘, x 大約是 300 秒。 在此情況下,可能需要 5 分鐘 (300 秒) ,超過逾時臨界值 30 分鐘,特定階段作業才會失效。
JavaServer 頁面正在建立不想要的階段作業
<% @page session=false%>
在 HTTP 階段作業計時器到期之後,使用者未登出
如果 WebSphere Application Server 的使用者登入應用程式,且閒置的時間超過指定的 HTTP 階段作業逾時值,使用者資訊不會失效,使用者認證會維持作用中,直到 LTPA 記號逾時為止。
com.ibm.ws.security.web.logoutOnHTTPSessionExpire 內容僅適用於使用表單登入的應用程式。- 在管理主控台中,按一下 安全> 廣域安全。
- 在「自訂內容」之下,按一下 新建。
- 在「名稱」欄位中,輸入 com.ibm.ws.security.web.logoutOnHTTPSessionExpire。
- 在值欄位中,輸入 true。
- 按一下套用並儲存,以儲存對配置所做的變更。
- 重新同步化並重新啟動伺服器。
更新已啟用階段作業持續性的應用程式時,在執行時期可能會發生異常狀況
在執行時期啟用階段作業持續性並執行應用程式更新的使用者,在重新啟動應用程式之後可能會遇到非預期的異常狀況。
如果已進行更新來變更儲存的屬性,則在應用程式更新之前,如果應用程式無法處理這些變更,則相關聯應用程式所建立的所有階段作業可能都必須失效。 在此狀況下,也必須從後端移除所有階段作業物件。 請參閱 HTTP 階段作業失效資訊,以進一步瞭解如何適當地移除這些階段作業。