如果您的輸入 JAR 或 EAR 檔含有 CMP Bean,EJB 部署工具就會尋找現有的綱目和對映,在產生部署程式碼時使用。如果找不到現有的綱目及對映,則會利用由上而下的對映規則,建立一個綱目和對映。
如果採用由上而下的對映方式,就表示您已經有現成的 Enterprise Bean,而且資料庫的設計也要根據它的設計而定。在所產生的綱目中,每一個 CMP Entity Bean 分別有一個對應表格。在這些表格中,每一個直欄都對應到 Enterprise Bean 的一個 CMP 欄位,它所產生的對映,會將這個欄位對映到直欄。
語法
當輸入 EAR 或 JAR 檔中提供綱目及對映表時,
請使用下列指令及選用參數:
ejbdeploy input_EAR_name|input_JAR_name working_directory output_EAR_name|output_JAR_name [-bindear "options"] [-cp classpath]
[-codegen] [-debug] [-keep] [-ignoreErrors]
[-quiet] [-nowarn] [-noinform] [-rmic "options"]
[-target name] [-trace] [-sqlj]
當輸入 EAR 或 JAR 檔中不提供綱目及對映表,需要由上而下的對映方法時,
請使用下列指令及選用參數:
ejbdeploy input_EAR_name|input_JAR_name working_directory output_EAR_name|output_JAR_name [-bindear "options"] [-cp classpath]
[-codegen] [-dbname "name"] [-dbschema "name"]
[-dbvendor name] [-debug] [-keep]
[-ignoreErrors] [-quiet] [-nowarn] [-noinform]
[-rmic "options"] [-35] [-40]
[-target name] [-trace] [-sqlj][-OCCColumn]註: - 只有以由上而下的作業模式建立資料庫定義時,
才會使用 -dbschema、-dbname、-dbvendor、-OCCColumn、-35 及 -40 選項。然後,
在 JAR 或 EAR 檔的綱目文件中儲存資料庫資訊,這表示不需要重新指定選項。此外,這也表示,
產生 JAR 或 EAR 檔的同時,必須定義正確的資料庫,因為稍後無法變更它。
- 當您使用 ejbdeploy 指令時,依預設,建立資料定義語言 (DDL) 檔案時,其後端系統設為 DB2® V8.1 for Windows®和 UNIX®
(後端系統 ID 為 DB2UDB_V81)。
如果您要設定不同資料庫後端系統,請使用-dbname、-dbschema 及 -dbvendor 選項,指定所要的選項。然而,您只能定義一個後端系統。如果 JAR 檔已經包含 DB2 後端系統,
而您在指令行上指定 -dbvendor ORACLE,則會忽略 dbvendor 指定,並不會取得第二個後端系統。
- ejbdeploy
- 用來產生部署程式碼的指令。如果執行時不含任何引數,
則 ejbdeploy 指令會顯示可用於此指令的引數清單。
- input_JAR_name 或 input_EAR_name
- 輸入 JAR 或 EAR 檔的完整名稱,
這個檔案包含要產生部署程式碼的 Enterprise Bean;例如 c:\ejb\inputJARs\myEJBs.jar
(這個引數是必要的)。
ejbdeploy 指令不再使用指定在系統類別路徑的內容。相反地,必須使用 -cp 選項將相依類別包含在 JAR 檔,或併入指令處理。您必須確定每個 Enterprise Bean
的起始和遠端類別 .class 檔案都包裝在輸入 JAR 或 EAR 檔中。
原始檔不應併入輸入 JAR
或 EAR 檔。如果輸入 JAR 或 EAR 檔中有原始檔,則 EJBDeploy
工具會先執行重新建置,然後才產生部署程式碼。建議:
移除原始檔,或將所有相依類別及資源檔併入類別路徑。否則,在伺服器上重新建置應用程式時,
可能會發生問題。
- working_directory
- 產生程式碼時,儲存暫存檔的目錄名稱 (這個引數是必要的)。如果執行 ejbdeploy 指令之前,
指定的工作目錄已存在,會在此工作目錄 (當做 Eclipse 工作區) 中產生暫存檔。然而,
如果執行指令之前,工作目錄不存在,便會建立此目錄,並在其中產生 Eclipse 工作區。在這兩個情況下,
完成產生部署程式碼時,都會自動移除工作區及其所有檔案,
除非您指定 -keep 選項 (保留工作區有助於問題判斷)。
- output_JAR_name 或 output_EAR_name
- 輸出 JAR 或 EAR 檔的完整名稱,
由 ejbdeploy 指令建立這個檔案,
檔案包含產生的類別 (部署所需要);例如:c:\ejb\outputJARs\myEJBs.jar
(這個引數是必要的)。執行 ejbdeploy 指令之前,
完整名稱中所指定的目錄必須已存在
(請注意,當您指定輸出 JAR 或 EAR 檔的名稱,
然後執行 ejbdeploy 指令時,會改寫任何現有的同名輸出 JAR 或 EAR
檔,而不會出現警告)。
- -cp classpath
- 如果您想要對與其他壓縮檔或 JAR 檔具有相依關係的 JAR 或 EAR 檔執行ejbdeploy指令,您可以使用 -cp 選項來指定其他 JAR 檔或壓縮檔的類別路徑。使用 -cp 選項,
您可以指定多個壓縮檔及 JAR 檔當做引數。然而,壓縮檔或 JAR 檔名稱必須是完整、
以分號區隔,並以雙引號括住。例如:-cp "path\myJar1.jar;path\myJar2.jar;
path\myJar3.jar"
提示: 您必須指定 SQLJ 轉換器類別 sqlj.zip 的位置。這個檔案的預設路徑是
x:\java,其中 x 是
DB2 的安裝目錄,例如,在 Windows 上,
為 d:\sqllib\java\sqlj.zip。
- -codegen
- 限制 ejbdeploy 指令只進行下列作業:
(a) 從輸入 JAR 或 EAR 檔匯入程式碼
(b) 產生部署程式碼,以及
(c) 將程式碼匯出至輸出 JAR 或 EAR 檔。它不會編譯產生的部署程式碼,
也不會執行遠端方法呼叫編譯器 (RMIC)。
因為在輸出 EAR 或 JAR 檔中通常不會匯出 Java™ 原始程式碼,
所以這是儲存產生的程式碼唯一方法。
- -bindear "options"
- 讓您將連結移入 EAR 檔。這個引數只適用於 EAR 檔。使用這個指令時,也可以不指定任何選項。指定選項時,必須以空格區隔,並以雙引號括住選項。例如:-bindear "xx yy zz"。
如需這些選項的相關資訊,請參閱 WebSphere® Application Server 文件。
- -dbname "name"
- 在產生的資料定義語言 (DDL) 檔案中,所要定義的資料庫名稱。如果資料庫名稱包含空格,
必須以雙引號括住整個名稱。例如,-dbname "my
database"
- -dbschema "name"
- 要建立的綱目名稱。如果綱目名稱包含空格,
必須以雙引號括住整個名稱。例如:-dbschema "my schema"
- -dbvendor name
- 資料庫供應商名稱,用來決定資料庫直欄類型、
對映資訊、Table.ddl 及其他相關資訊。有效的資料庫供應商名稱如下:
- DB2UDB_V81 (DB2 Universal Database V8.1 for Windows 和 UNIX)
- DB2UDB_V82 (DB2 Universal Database V8.2 for Windows 和 UNIX)
- DB2UDBOS390_V7 (DB2 Universal Database™ for z/OS® 和 OS/390® V7)
- DB2UDBOS390_V8(DB2 Universal Database for z/OS 和 OS/390,
V8)
- DB2UDBISERIES (DB2 for iSeries™)
- DB2UDBISERIES_V52 (DB2 for iSeries V5R2)
- DB2UDBISERIES_V53 (DB2 for iSeries V5R3)
- ORACLE_V8 (Oracle V8.0)
- ORACLE_V9I (Oracle V9i)
- ORACLE_V10G (Oracle V10g)
- INFORMIX_V73 (Informix® Dynamic Server.2000 V7.3)
- INFORMIX_V93 (Informix Dynamic Server.2000 V9.3)
- INFORMIX_V94 (Informix Dynamic Server.2000 V9.4)
- SYBASE_V1200 (Sybase Adaptive Server Enterprise V12.0)
- SYBASE_V1250 (Sybase Adaptive Server Enterprise V12.5)
- MSSQLSERVER_2000 (Microsoft® SQL Server 2000)
- MSSQLSERVER_V7 (Microsoft SQL Server V7.0)
- CLOUDSCAPE_V5 (Cloudscape™ V5.1)
- DERBY_V10 (Derby, V10)
下列後端系統 ID 即將棄用:
- SQL92 (1992 SQL Standard)
- SQL99 (1999 SQL Standard)
雖然 SQL92 及 SQL99 即將棄用,但您還是可以使用 SQL92 及 SQL99 選項。如果您使用 SQL92 或 SQL92 選項,就會產生 CloudscapeV5 的 SQL。如果您選擇使用即將棄用的 SQL92 或 SQL99 後端系統 ID,
請參閱主題SQL 語法的 EJB 查詢,
有助於您判斷在不久的將來即將棄用的 SQL92 及 SQL99 後端系統無法使用時,
應該使用的後端系統。
如果您要使用不受支援的資料庫,請參閱主題SQL 語法的 EJB 查詢,
協助您選擇與不受支援的部署環境最符合的有效資料庫供應商後端系統 ID。
註: - 預設值是 DB2UDB_V81 (DB2 V8.1 for Windows 和 UNIX)
- 如果指定了 -sqlj,它支援 DB2UDB_V82 (DB2 V8.2 for Windows
和 UNIX)、DB2UDB_V81
(DB2 V8.1 for Windows
和 UNIX)、DB2UDBOS390_V8 (DB2 for OS/390
V8) 及 DB2UDBOS390_V7(DB2 for OS/390 V7)。
- -debug
- 指定編譯部署程式碼時,將出現除錯資訊。
- -keep
- 執行 ejbdeploy 指令時,
控制所建立暫存檔的存放位置 (亦即 Eclipse 工作區)。如果不含這個選項,在完成指令時,就會刪除 Eclipse 工作區。
- -ignoreErrors
- 指定即使偵測到驗證錯誤,應繼續處理程序。
- -quiet
- 驗證期間,抑制狀態訊息 (但不抑制錯誤訊息)。
- -nowarn
- 驗證期間,抑制警告及參考訊息。
- -noinform
- 驗證期間,抑制參考訊息。
- -rmic "options"
- 讓您將 RMIC 選項傳遞至 RMIC。指定選項 (請參閱 SUN 的 RMI 工具文件) 時,必須以空格區隔並以雙引號括住選項。例如:-rmic "-nowarn
-verbose"
- -35
- 如果您要使用隨附於 WebSphere Application Server
3.5 版中 EJB 部署工具使用的 CMP Entity Bean 由上而下的對映規則,
請指定 -35 選項。在部分狀況下,這可能是理想選項。
然而,如果不指定 -35 選項,
則會使用改良版的由上而下對映。
- -40
- 使用 WebSphere Application Server
4.0 由上而下的對映規則。
- -target name
- 指定編譯應用程式的特定 WebSphere 執行時期環境。設定執行時期目標,
會配置使用的 JRE 程式庫,並且將專案的類別路徑配置為包含 WebSphere 執行時期程式庫。有效的伺服器名稱如下:
- WAS510 (WebSphere Application Server V5.1)
- WAS502 (WebSphere Application Server 5.02)
- WAS501 (WebSphere Application Server 5.01)
- WAS500 (WebSphere Application Server 5.00)
- -trace
- 在主控台中產生其他進度訊息。
- -sqlj
註: 這個選項只對符合 2.0 規格的 Enterprise Bean 才是有效的。
讓您能使用 SQLJ 取代 JDBC,
以呼叫 DB2 資料庫。
指定 -sqlj 選項時,EJB 部署工具會產生 SQLJ 程式碼,
讓 CMP Bean 能夠使用 SQLJ 存取資料庫。它也會自動呼叫 SQLJ 轉換器,
以轉換 SQLJ 原始檔。最後,EJB 部署工具會建立 Ant Script,
協助您輕鬆自訂 SQLJ 設定檔。您可以對設定檔執行 Ant Script,
以產生 DB2 套件。在執行時期可以使用這些 DB2 套件,避免延伸執行時期的檢查。一旦使用 EJB 部署工具產生
SQLJ 的部署程式碼,即可對產生的 .ser 檔案執行 DB2 SQLJ 設定檔自訂程式 db2sqljcustomize,
(.ser 檔案位於與 DB2 後端系統相關 websphere_deploy 資料夾的子檔案夾)。如需執行 DB2 SQLJ
設定檔自訂程式的相關資訊,請參閱 DB2 文件,或造訪 www7b.boulder.ibm.com/dmdd/zones/java/bigpicture.html (SQLJ
支援 一節)。
- -OCCColumn
註: 在產生由上而下的對映時,這個選項只適用於 EJB 2.x CMP Entity Bean。
讓您能新增直欄至關聯式資料庫表格中,來偵測碰撞。
碰撞偵測直欄是額外保留的資料庫直欄,可以判斷記錄是否已更新。
新增偵測碰撞的直欄是,針對樂觀存取目的而在述語中的另一種樂觀並行控制架構。若要管理碰撞偵測的直欄,
您必須提供自己的資料庫觸發函式實作。下列是新增碰撞偵測的直欄結果:- 碰撞偵測的直欄資料類型是 64 位元整數。
- 碰撞偵測的直欄命名慣例有下列格式:OCC_bean_name
- 由上而下的對映會產生額外的關聯式直欄。這個直欄無法對映至 Enterprise Bean。
範例:執行 ejbdeploy 指令:
ejbdeploy AccessEmployee.ear d:\deploydir AccessEmployee_sqlj.ear -dbvendor DB2UDB_V81 -keep -sqlj -cp "e:\sqllib\java\sqlj.zip"
說明: 我們在 e:\sqllib 安裝了 DB2 Universal Database V8.1 (for Windows 和 UNIX)。
ejbdeploy 指令會採用 AccessEmployee.ear 檔(其 Enterprise Bean 符合 EJB 2.0 規格)作為輸入,並產生 AccessEmployee_sqlj.ear 作為輸出。因為使用 -sqlj 選項,
所以在產生的程式碼中使用 SQLJ 取代 JDBC,以呼叫 DB2。
執行 ejbdeploy 時,
它會在指定為工作目錄 d:\deploydir 的目錄中,
建立 Eclipse 工作區。完成執行時,會刪除這個工作區。然而,-keep 選項會使得
ejbdeploy 結束時不刪除工作區。