當(dāng)今 J2EE 服務(wù)器市場(chǎng)可謂百花齊放啊,本文主要介紹 OC4J ( Oracle Application Server Containers for J2EE )的特性和配置方式,它是 Oracle 公司提供的作為 J2EE 的 Container ,由純 Java 語(yǔ)言編寫(xiě)。要強(qiáng)調(diào)的是根據(jù)本人親身體會(huì), OC4J 絕對(duì)是一個(gè)十分可靠的服務(wù)器,在企業(yè)級(jí)應(yīng)用環(huán)境中毫無(wú)問(wèn)題!
???
??? 一、 OC4J 的最新版本是什么?
??????? 是 OC4J 10g (9.0.4) 。
??? 二、 OC4J 是通過(guò)了 J2EE 兼容性認(rèn)證的產(chǎn)品嗎?
??????? 是的, Oracle 從 Sun 獲得了 J2EE 技術(shù)的官方許可( http://java.sun.com/j2ee/licensees.html ), OC4J 也通過(guò)了 J2EE 兼容性認(rèn)證的產(chǎn)品,可參考 J2EE 兼容性一覽表( http://java.sun.com/j2ee/compatibility.html ),也可以從 Sun 的網(wǎng)站獲得詳情。
??? 三、不同的 OC4J 版本,與 J2EE 版本是怎樣對(duì)應(yīng)的?
?????????? 產(chǎn)品版本 ??????? 兼容的 J2EE 版本
????????? OC4J 9.0.4???????? J2EE 1.3
????????? OC4J 9.0.3???????? J2EE 1.3
????????? OC4J 9.0.2???????? J2EE 1.2?
????????? OC4J 1.0.2.x?????? J2EE 1.2
??? 四、 J2SE 的哪些版本可以與 OC4J 搭配?
??????? Oracle 產(chǎn)品的所有官方認(rèn)證信息,可以到 Oracle 技術(shù)支持網(wǎng)站 http://metalink.oracle.com 獲得。
?????????? 產(chǎn)品版本 ??????????J2SE 版本
????????? OC4J 9.0.4???? J2SE 1.4.x, J2SE 1.3.x
????????? OC4J 9.0.3???? J2SE 1.4.x, J2SE 1.3.x
????????? OC4J 9.0.2???? J2SE 1.3.x, J2SE 1.2.x
????????? OC4J 1.0.2.x?? J2SE 1.3.1, J2SE 1.2.x?
??? 五、什么是 OC4J 獨(dú)立版?
??????? OC4J 獨(dú)立版是 Oracle 應(yīng)用服務(wù)器產(chǎn)品家族的成員,包含 J2EE 和 Web 服務(wù)組件。 OC4J 獨(dú)立版比完整的 Oracle 應(yīng)用服務(wù)器產(chǎn)品稍小,下載以后只有一個(gè) ZIP 文件。它作為單 JAVA 進(jìn)程執(zhí)行。
???????
??????? OC4J 獨(dú)立版兼容于 J2EE1.3 ,可用于開(kāi)發(fā)和運(yùn)行小規(guī)模產(chǎn)品。 OC4J 獨(dú)立版提供了內(nèi)嵌的 HTTP/S 監(jiān)聽(tīng)器,允許客戶(hù)端運(yùn)行發(fā)布后的應(yīng)用程序。 OC4J 獨(dú)立版的應(yīng)用程序發(fā)布與服務(wù)器的配置,需要手工編輯幾個(gè) XML 文件。
???????
??????? 大規(guī)模的企業(yè)級(jí)發(fā)布, Oracle 應(yīng)用服務(wù)器產(chǎn)品或許更適合于它,來(lái)適應(yīng)廣泛的企業(yè)級(jí)需求(而不是 OC4J 獨(dú)立版),這樣可以更好的進(jìn)行程序控制和性能管理,以及配置、管理控制臺(tái)。
??? 六、那么 Oracle 獨(dú)立版和在 Oracle 應(yīng)用服務(wù)器之內(nèi)的 OC4J 有什么重大不同之處?
??????? 在代碼方面,構(gòu)造 OC4J 獨(dú)立版的單元集合與 Oracle 應(yīng)用服務(wù)器之內(nèi)的 OC4J 幾乎一樣。如果你在 OC4J 獨(dú)立版中開(kāi)發(fā)并發(fā)布一個(gè)應(yīng)用程序,那么這個(gè)程序也可以在 Oracle 應(yīng)用服務(wù)器上很好的運(yùn)行。
???????
??????? 這兩種環(huán)境的最主要的不同點(diǎn)是配置上的。 Oracle 應(yīng)用服務(wù)器的 OC4J 被配置在運(yùn)行于 Oracle 應(yīng)用服務(wù)器環(huán)境中。意味著 Oracle 應(yīng)用服務(wù)器類(lèi)似于一個(gè)入口,這個(gè)入口是附加的特征,通過(guò)附加的類(lèi)庫(kù)提供支持。它在不同的端口之間監(jiān)聽(tīng)連接( Oracle 應(yīng)用服務(wù)器動(dòng)態(tài)平分),日志輸出到不同的文件和目錄,它的默認(rèn) Web 監(jiān)聽(tīng)器使用 mod_oc4j ,能和 AJP 協(xié)議交流,勝于 HTTP 協(xié)議直接瀏覽客戶(hù)端。
???????
??????? 另外一個(gè)不同在于控制和管理 OC4J 的方式。在 Oracle 應(yīng)用服務(wù)器環(huán)境下, OC4J 被配置為完整的應(yīng)用程序服務(wù)器技術(shù)的一部分,使用 Oracle 企業(yè)級(jí)應(yīng)用程序管理器控制,或者用等價(jià)的命令行工具, dcmctl 。直接對(duì) XML 配置文件操作并不是首選方案,盡管也能完成配置。應(yīng)用程序發(fā)布也使用 Oracle 企業(yè)級(jí)應(yīng)用程序管理器操作,或用命令行工具。 Oracle 應(yīng)用服務(wù)器的 OC4J 啟動(dòng)和停止也通過(guò)以上同樣的控制臺(tái)操作,并能作為 Oracle 應(yīng)用服務(wù)器實(shí)例的一部分,可配置成自動(dòng)管理。
???????
??????? 與之相反,對(duì) OC4J 獨(dú)立版的操作、發(fā)布以及管理工作很大程度上依賴(lài)手工編輯 XML 文件。命令行工具不適用于 OC4J 獨(dú)立版。 admin.jar ,能夠利用一組命令把多個(gè)任務(wù)執(zhí)行完,但不能將這些命令適用于 Oracle 應(yīng)用服務(wù)器環(huán)境。
???????
??????? 關(guān)于更多的 Oracle 應(yīng)用服務(wù)器 OC4J 配置信息以及命令行工具 dcmctl 方面的操作,請(qǐng)參考 OC4J 獨(dú)立版用戶(hù)指南。
???????
??????? 關(guān)于更多的 OC4J 獨(dú)立版配置信息以及命令行工具 admin.jar 方面的操作,請(qǐng)參考 OC4J 獨(dú)立版用戶(hù)指南。
??? 七、在哪里能看到 OC4J 的文檔?
??????? 所有 Oracle 產(chǎn)品的相關(guān)文檔都能在 OTN 網(wǎng)站上找到 http://otn.oracle.com/documentation/content.html 。更加詳細(xì)的 OC4J 文檔在 http://otn.oracle.com/documentation/appserver10g.html 。 OC4J 獨(dú)立版用戶(hù)指南在 OC4J 大類(lèi)中提供。 Readme.txt 文件在 OC4J 獨(dú)立版的根目錄,提供了一些關(guān)于安裝和使用的基本信息。
??? 八、在哪里能找到關(guān)于 OC4J 性能的列表?
??????? 得到 OC4J 技術(shù)信息最好的地方是在 OTN 上的 OC4J 技術(shù)專(zhuān)區(qū) http://otn.oracle.com/tech/java/oc4j 。 OC4J 的特性總覽在 http://otn.oracle.com/tech/java/oc4j/904/collateral/OC4J-FOV-904.html ,列舉了 OC4J 10g (9.0.4) 的所有特點(diǎn)。
??? 九、在哪里可以得到更多關(guān)于 OC4J 的信息?
???????
呵呵,說(shuō)來(lái)說(shuō)去還是
OTN
網(wǎng)站
http://otn.oracle.com/tech/java/oc4j
。
?
??? 十、安裝 Oracle 獨(dú)立版需要怎樣做?
??????? 安裝 Oracle 獨(dú)立版,需要解壓縮 oc4j_extended.zip 文件。
??????? 會(huì)創(chuàng)建這樣的目錄結(jié)構(gòu):
??????? <install-dir>
??????? /bin
??????? /j2ee
??????? /javacache
??????? /javavm
??????? /jdbc
??????? /jdk
??????? /jlib
??????? /lib
??????? /rdbms
??????? /soap
??????? /sqlj
??????? /webservices
??????? <install-dir> 就是你解壓縮 oc4j_extended.zip 后所產(chǎn)生的目錄。
???????
??????? 完整安裝 OC4J ,需要切換到 <install-dir>j2ee/home 目錄,用以下命令:
??????? > cd <install-dir>/j2ee/home
??????? > java -jar oc4j.jar -install
???????
??????? <install-dir>/j2ee/home 目錄作為 <J2EE_HOME> 提交。
??????? 安裝會(huì)提示你輸入和驗(yàn)證管理員密碼,以便使用控制臺(tái)命令行工具,管理員用戶(hù)名默認(rèn)為“ admin ”。
???????
一系列的指令包含在 Readme.txt 文件中,它跟隨 OC4J 獨(dú)立版一起發(fā)布。
???
? 十一、怎樣啟動(dòng) OC4J 獨(dú)立版?
??????? 啟動(dòng) OC4J 服務(wù)器,首先要用 DOS 命令切換到 J2EE_HOME 目錄,然后:
???????
??????? a )根據(jù) j2ee/home/config 目錄下的默認(rèn)配置文件啟動(dòng) OC4J :
?????????????????? > cd <J2EE_HOME>
?????????????????? > java -jar oc4j.jar
??????????????????
??????? b )根據(jù)自定義的 server.xml 文件啟動(dòng) OC4J (在 /mypath 中):
????????????????? > cd <J2EE_HOME>
????????????????? > java -jar oc4j.jar -config /mypath/server.xml
???????
??????? 當(dāng)服務(wù)器啟動(dòng)以后,將會(huì)出現(xiàn)初始化信息,包括版本號(hào)等信息,例如:
??????????? Oracle Application Server Containers for J2EE 10g (9.0.4.0.0) initialized
???????
? 十二、怎樣停止 OC4J 獨(dú)立版?
??????? 在 OC4J 進(jìn)程窗口中按下 ^c ( Ctrl+c )就可以停止它了,或者使用在 admin.jar 命令行工具中的停止命令,或者使用操作系統(tǒng)的進(jìn)程終止命令(例如 UNIX/Linux 的“ kill ”)。
? ?
? 十三、怎樣使用 admin.jar 命令行工具停止 OC4J 呢?
??????? 用 admin.jar 停止 OC4J ,需要按如下的方法:
????????? >cd <J2EE_HOME>
????????? > java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin>
????????? <admin-password> -shutdown
??????? 這個(gè)命令是一個(gè)完美的關(guān)閉 OC4J 的方法。如果 OC4J 還沒(méi)有被關(guān)閉,你就需要用 -force 參數(shù)強(qiáng)行關(guān)閉了:
???????? > java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin>
???????? <admin-password> -shutdown force
?????? 更多信息請(qǐng)參考 OC4J 獨(dú)立版用戶(hù)手冊(cè)。
??????
? 十四、可以在 Windows 2000/XP 中把 OC4J 作為一個(gè)服務(wù)運(yùn)行嗎?
??????? 目前不提供在 Windows 平臺(tái)中把 OC4J 作為直接的服務(wù)這一機(jī)制。如果你定要 24x7 小時(shí)的運(yùn)行策略,我們推薦你應(yīng)該選用 Oracle 應(yīng)用服務(wù)器版。作為安裝并運(yùn)行為 Windows 平臺(tái)服務(wù)的 Oracle 應(yīng)用服務(wù)器,它擁有自動(dòng)進(jìn)程管理的能力。倘若要讓 Windows 平臺(tái)的 OC4J 有自動(dòng)啟動(dòng) / 重啟的機(jī)制, Oracle 應(yīng)用服務(wù)器進(jìn)程管理器能被配置成為運(yùn)行 OC4J 的實(shí)例。
??????? 參考 Oracle 應(yīng)用服務(wù)器指南,可獲得更多信息。
?
? 十五、 OC4J 的 HTTP 默認(rèn)端口是什么?
??????? OC4J
獨(dú)立版的默認(rèn)
HTTP
端口是
8888
。指定的配置文件是
<J2EE_HOME>/config/http-web-site.xml
。如果你已經(jīng)安裝了
Oracle
應(yīng)用服務(wù)器,而現(xiàn)在想用
OC4J
獨(dú)立版來(lái)代替,你必須通過(guò)
Oracle HTTP
服務(wù)器訪問(wèn)發(fā)布在
OC4J
上面的
Web
應(yīng)用程序。
Oracle HTTP
服務(wù)器的默認(rèn)端口是
7777
。
十六、 OC4J 獨(dú)立版有圖形用戶(hù)界面的控制臺(tái)嗎?
這個(gè)版本沒(méi)有。所有對(duì) OC4J 獨(dú)立版的配置和發(fā)布的操作只能通過(guò)手工修改其配置文件。將來(lái)我們會(huì)提供一個(gè)應(yīng)用最新 JMX 規(guī)范,基于 Web 的控制臺(tái),來(lái)執(zhí)行配置和發(fā)布任務(wù)。
十七、我可以把 HTTPS 用于 OC4J HTTP 監(jiān)聽(tīng)器嗎?
可以。 OC4J HTTP 監(jiān)聽(tīng)器支持 HTTPS ,可被配置來(lái)順應(yīng)這種潮流。
參考相關(guān) OC4J 用戶(hù)指南(獨(dú)立版或 Oracle 應(yīng)用服務(wù)器版)來(lái)獲得更多信息。
十八、怎樣用 OC4J HTTP 監(jiān)聽(tīng)器來(lái)改變 HTTP 端口?
OC4J HTTP 監(jiān)聽(tīng)器使用的端口被定義在配置文件:
<J2EE_HOME>/config/http-web-site.xml 文件的 web-site 標(biāo)簽 port 屬性中。
<web-site port="8888" display-name="Oracle Application Server Containers for J2EE HTTP Web Site">
你可以把 port="8888" 修改為不同的端口號(hào)。
十九、用 OC4J 怎樣連接數(shù)據(jù)庫(kù)?
OC4J 使用數(shù)據(jù)源來(lái)定義連接數(shù)據(jù)庫(kù)的操作。當(dāng) OC4J 啟動(dòng)以后,它能建立基于配置文件的 DataSource 對(duì)象。這些 DataSource 對(duì)象擔(dān)當(dāng)連接工廠(連接池),允許應(yīng)用程序獲得一個(gè)連接,而不需要獲得對(duì)這個(gè)數(shù)據(jù)庫(kù)的物理上的詳細(xì)連接信息。
數(shù)據(jù)源在 J2EE_HOME/config/data-sources.xml 中被定義為默認(rèn)值。使用 OC4J 獨(dú)立版時(shí),你應(yīng)該手工添加一個(gè)你需要的數(shù)據(jù)庫(kù)連接聲明。當(dāng)使用 Oracle 應(yīng)用服務(wù)器版時(shí),你應(yīng)該用 Oracle 企業(yè)管理控制臺(tái)來(lái)定義數(shù)據(jù)源。
一個(gè)數(shù)據(jù)源的定義包含這個(gè)數(shù)據(jù)源所要連接數(shù)據(jù)庫(kù)的所有信息。典型的例子如下:
<data-source
class="com.evermind.sql.DriverManagerDataSource"
name="OracleDS"
location="jdbc/OracleCoreDS"
xa-location="jdbc/xa/OracleXADS"
ejb-location="jdbc/OracleDS"
connection-driver="oracle.jdbc.driver.OracleDriver"
username="scott"
password="tiger"
url="jdbc:oracle:thin:@localhost:1521:oracle"
inactivity-timeout="120"
stmt-cache-size="100"
/>
參考 OC4J 文檔的 J2EE 服務(wù)指南來(lái)獲得更多信息。
二十、如果我不想把數(shù)據(jù)庫(kù)的密碼這么直白的表現(xiàn)出來(lái),該這么辦?
OC4J 9.0.4 允許你把密碼放在不同的配置文件中,以便通過(guò)一種安全的方式來(lái)間接管理。允許你指定一特定安全包, OC4J 會(huì)自己解析出密碼來(lái)。這樣能使密碼繼續(xù)留在一個(gè)集中控制的區(qū)域被管理,還可選擇本地 XML 用戶(hù)存儲(chǔ)或使用 Oracle 互聯(lián)網(wǎng)目錄( Oracle Internet Directory )。
參考 OC4J 文檔的 J2EE 服務(wù)指南來(lái)獲得更多信息。
二十一、我可以讓 OC4J 連接非 Oracle 數(shù)據(jù)庫(kù)嗎?
可以,實(shí)際上 Oracle 支持一整套 JDBC 驅(qū)動(dòng)程序,可以用來(lái)連接 IBM , Sybase ,和 Microsoft 的數(shù)據(jù)庫(kù)產(chǎn)品。利用 JDBC 驅(qū)動(dòng)程序,來(lái)彌補(bǔ)那些 Oracle 支持庫(kù)所不支持的產(chǎn)品。與非 Oracle 數(shù)據(jù)庫(kù)產(chǎn)品建立一個(gè)連接,你應(yīng)該為 OC4J 配置數(shù)據(jù)源,來(lái)定義一系列必須的 JDBC 驅(qū)動(dòng)程序信息,例如 JDBC URL 、連接名,等。
參考
OC4J
文檔的
J2EE
服務(wù)指南的數(shù)據(jù)源章節(jié)獲得更多信息。
?
二十二、
WAR
文件能發(fā)布為
Web
應(yīng)用程序嗎?
當(dāng)然可以,如果你希望只以 Web 模式發(fā)布,那么可以利用默認(rèn)的 OC4J 配置。這里有兩步:
首先,告訴容器 WAR 文件被發(fā)布到哪里。用編輯器打開(kāi) <J2EE_HOME>/config/application.xml 文件,增加 <web-module> 標(biāo)簽,定義 WAR 文件屬性。
<web-module id="HRWebModule" path="<PATH-TO-WAR-FILE>"/>
其次,告訴 OC4J HTTP 服務(wù)器關(guān)于如何通過(guò) URL 來(lái)訪問(wèn)部署的 WAR 文件。用編輯器打開(kāi) <J2EE_HOME>/config/http-web-site.xml 文件。添加 <web-app> 標(biāo)簽,并為你的 Web 程序定義屬性。請(qǐng)注意, application 屬性必須定義為“ default ”,是因?yàn)榘l(fā)布的是默認(rèn)應(yīng)用程序。 name 屬性應(yīng)該匹配你的 Web 程序所定義的 ID 屬性。
<web-app application="default" name="HRWebModule" root="/hrweb" />
WAR 文件被 OC4J 發(fā)布,并可通過(guò)瀏覽器來(lái)訪問(wèn) /hrweb 目錄。
如果你使用的是 Oracle 應(yīng)用程序服務(wù)器來(lái)代替 OC4J 獨(dú)立版,那么應(yīng)該通過(guò)管理控制臺(tái)來(lái)發(fā)布 WAR 文件。
二十三、哪里可以放置我的共享類(lèi)庫(kù),以便它們可以訪問(wèn)我發(fā)布的應(yīng)用程序?
OC4J 配置了一個(gè)默認(rèn)的共享目錄,目錄就是 <J2EE_HOME>/applib 。任何類(lèi)庫(kù)都可以放在這個(gè)目錄,發(fā)布在 OC4J 上的應(yīng)用程序就可以訪問(wèn)了。
共享目錄在 <J2EE_HOME>/config/application.xml 文件的 <library> 標(biāo)簽中定義:
<orion-application autocreate-tables="true" default-data-source="jdbc/OracleDS">
<web-module id="defaultWebApp" path="../../home/default-web-app"/>
<web-module id="dms0" path="../../home/applications/dms0.war"/>
<web-module id="dms" path="../../home/applications/dms.war"/>
<persistence path="../persistence"/>
<!-- Path to the libraries that are installed on this server.
These will accesible for the servlets, EJBs etc -->
<library path="../applib"/>
...
</orion-application>
更多關(guān)于裝載類(lèi)和打包的問(wèn)題,可參考 OTN 的文檔 http://otn.oracle.com/tech/java/oc4j/pdf/ClassLoadingInOC4J_WP.pdf 。
二十四、怎樣在
OC4J
中使用像
xerces
這種第三方的
XML
解析器?
OC4J 已經(jīng)自帶了 Oracle XML 解析器。 Oracle XML 解析器與 JAXP 1.1 標(biāo)準(zhǔn)完全兼容,可服務(wù)于需要 JAXP 功能的應(yīng)用程序場(chǎng)合。這種方式不需要下載、安裝、配置其他的 XML 解析器。
Oracle XML 解析器( xmlparserv2.jar )默認(rèn)裝載于 OC4J 的系統(tǒng)級(jí)庫(kù),通過(guò)包含 oc4j.jar 的 Manifest.mf 文件實(shí)現(xiàn)。這種機(jī)制可讓 Oracle XML 解析器適用于所有普通的發(fā)布和打包的情況。但不能修改 oc4j.jar 的 Manifest.mf 文件。
需要注意的是,通過(guò)修改 OC4J 的配置文件來(lái)運(yùn)行其他 XML 解析器或 JDBC 庫(kù)是不被支持的。我們有的客戶(hù)已經(jīng)成功地替換了系統(tǒng)級(jí) XML 解析器以及 JDBC 驅(qū)動(dòng)程序,并重新裝載在這個(gè)產(chǎn)品上。但我們不支持隨意移動(dòng)已測(cè)試和認(rèn)證的類(lèi)庫(kù),這將會(huì)導(dǎo)致意想不到的系統(tǒng)動(dòng)作,和系統(tǒng)錯(cuò)誤。
如果你一定要堅(jiān)持使用像 xerces 這樣的第三方 XML 解析器,那么當(dāng) OC4J 啟動(dòng)時(shí), xerces.jar 文件必須被裝載于 OC4J 系統(tǒng)級(jí)類(lèi)路徑中。可以使用 JRE 的 Xbootclasspath 標(biāo)記來(lái)達(dá)到這一目的:
java -Xbootclasspath/a:d:\xerces\xerces.jar -jar oc4j.jar
再一次重申,想當(dāng)然的配置是不允許的。
二十五、可以和我的應(yīng)用程序一起發(fā)布數(shù)據(jù)源文件嗎?
可以,應(yīng)該把安全文件(比如口令)和數(shù)據(jù)源文件一起打包在你的應(yīng)用程序中,保存為 EAR 文件。當(dāng)應(yīng)用程序被發(fā)布,這些文件會(huì)被 OC4J 用于建立連接或驗(yàn)證用戶(hù)信息。另外,當(dāng)需要發(fā)布應(yīng)用程序時(shí), Oracle JDeveloper 已經(jīng)標(biāo)準(zhǔn)化了這種打包機(jī)制。
要達(dá)到這一目的(打包),你應(yīng)該提供所有想要捆綁發(fā)布的文件,并放在和 application.xml 文件同一目錄中。另外,還要有一個(gè)引用這些東西的 orion-application.xml 文件。
如果 data-sources.xml 文件也要包含在應(yīng)用程序中的話, data-sources.xml 應(yīng)該包含一系列關(guān)于連接數(shù)據(jù)庫(kù)的配置信息。
EAR 文件結(jié)構(gòu)應(yīng)該像這樣:
<EAR-FILE>
/META-INF
application.xml
orion-application.xml
data-sources.xml
webmodule.war
ejbmodule.jar
例如, orion-application.xml 文件包含引用本地 data-sources.xml 文件的入口:
<orion-application>
<data-sources path="./data-sources.xml"/>
</orion-application>
在發(fā)布的時(shí)候, OC4J 引用 orion-application.xml 的內(nèi)容。它會(huì)拷貝定義在 EAR 文件中的 data-sources.xml ,并作為應(yīng)用程序的數(shù)據(jù)源配置文件來(lái)使用。