轉自:http://m.tkk7.com/rosen/archive/2005/08/12/9894.html
當今
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
中):
????????????????? > cd <J2EE_HOME>
????????????????? > 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
參數強行關閉了:
???????? > java -jar admin.jar ormi://<oc4j_host>:<oc4j_ormi_port> <admin>
???????? <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
文檔的
J2EE
服務指南來獲得更多信息。
二十一、我可以讓
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"/>
</orion-application>
在發布的時候,
OC4J
引用
orion-application.xml
的內容。它會拷貝定義在
EAR
文件中的
data-sources.xml
,并作為應用程序的數據源配置文件來使用。
posted on 2006-06-24 20:12
船長 閱讀(1656)
評論(0) 編輯 收藏 所屬分類:
J2EE