首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

ColdFusion MX 與 J2EE 環境共享 Session 數據的完整配置指南

     編輯:Java 相關知識

前言:打破技術壁壘的關鍵一步

在 ColdFusion MX 推出之前,ColdFusion 與 IBM WebSphere Application Server 的整合並不被看好。但隨著 ColdFusion MX 架構的全面 J2EE 化,這對組合煥然一新。本文將詳細介紹如何配置 ColdFusion MX,使其能在 WebSphere 等 J2EE 容器中與 Java 組件無縫共享會話變量,充分發揮雙方優勢,構建高效能的企業級 Web 應用。

核心配置:啟用 J2EE Session 管理

要實現跨技術棧的 Session 共享,首要任務是在 ColdFusion MX 管理員介面中啟用 J2EE 會話變量支持。

操作步驟

  1. 登入管理介面:透過瀏覽器訪問 https://<server:port>/<cfmx_contextroot>/CFIDE/administrator/index.cfm(例如 https://localhost/cfmx/CFIDE/administrator/index.cfm)。
  2. 進入記憶體變量設定:在主選單的「伺服器設定」中選擇「記憶體變量」。
  3. 勾選關鍵選項:確保同時勾選 Use J2EE session variables(使用 J2EE 會話變量)與 Enable Session Variables(啟用會話變量),然後提交變更。
  4. 重啟服務:重新啟動 WebSphere 上的 ColdFusion MX 實例,配置即刻生效。

伺服器設定選單 啟用 J2EE 會話變量面板

應用開發實戰:雙向 Session 互通

配置完成後,我們透過兩個示例應用(CFMXSESSIONA 與 CFMXSESSIONB)展示 ColdFusion 與 Java 如何互相讀寫對方建立的 Session 物件。

場景一:ColdFusion 建立,Java 讀取

在 Application.cfm 中定義應用名稱並啟用會話管理:

<cfapplication name="CFMXSESSIONA" 
    clientmanagement="no" 
    sessionmanagement="yes" 
    sessiontimeout="#createtimespan(0,0,15,0)#">

在 LoginAction.cfm 中建立 Session 結構:

<cfset SESSION = StructNew()>
<cfset SESSION.SESSIONCREATEDBY = "ColdFusion">
<cfset SESSION.ISAUTHENTICATED = "Y">
<cfset SESSION.USERID = selectUser.userid>
<cfset SESSION.USERNAME = selectUser.username>
<cfset SESSION.ROLE = selectUser.role>

Java 端(DisplaySession.jsp)透過 getAttribute 取得並強制轉型為 java.util.Map:

Map sessionMap = (java.util.Map) session.getAttribute("CFMXSESSIONA");
String userId = (String) sessionMap.get("USERID");

場景二:Java 建立,ColdFusion 讀取

JSP 中將資料封裝於 java.util.Map 並存入 Session:

Map map = new HashMap();
map.put("SESSIONCREATEDBY", "JAVA");
map.put("ISAUTHENTICATED", "Y");
map.put("USERID", String.valueOf(rs.getInt("USERID")));
// ... 其他屬性
session.setAttribute("CFMXSESSIONB", map);

ColdFusion 頁面(DisplaySession.cfm)透過 getPageContext() 取得 HttpSession 並讀取:

<cfset REQ = GetPageContext().getRequest()>
<cfset SES = REQ.getSession()>
<cfset MAP = SES.getAttribute("CFMXSESSIONB")>
<!--- 直接以 Struct 方式存取 --->
#MAP.USERID# | #MAP.USERNAME# | #MAP.ROLE#

資料類型自動映射表

ColdFusion MX 內建類型映射機制,讓雙方無需手動轉換:

ColdFusion 類型Java 類型
ARRAYjava.util.Vector
DATEjava.util.Date
NUMBERjava.lang.Double
QUERY/RECORDSETjava.sql.ResultSet
STRINGjava.lang.String
STRUCTjava.util.Map

範例應用下載與結語

完整範例程式碼可下載:i-coldstudio.zip,內含 readme.doc 安裝說明。

透過 J2EE Session 共享,ColdFusion 的快速開發優勢與 WebSphere 的企業級穩定性完美結合。開發團隊可根據專長分工:ColdFusion 負責表現層與業務邏輯快速構建,Java 負責底層服務與高效能運算,共同構建無縫整合的現代化應用架構。

範例應用執行畫面

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved