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