j2ee配置指南 1。介紹 本文介紹j2ee環境的配置,所有涉及的文件都在j2ee安裝目錄下的oncfig目錄,這些文件都是文本文件, 你可以有任意的文本編輯器來編輯它們。 通常情況下,你沒有改變這些文件的必要。但是如果你使用的數據庫驅動不是cloudscape的時候,你需要 遵循本章的內容進行配置。 2。JDBC驅動 默認的j2ee安裝後支持cloudscape數據庫(一個sun公司提供的演示數據庫),如果你的ejb使用的jdbc不 是連接cloudscape數據庫,那麼你需要按照下面的知道進行配置。(如果你不能確定本版本的j2ee支持你使用 的jdbc驅動,請到 11111 看相關信息。) 3。驅動的位置 你必須把驅動文件(.jar文件)copy到 $J2EE_HOME/lib/system目錄下。並且保證該文件包含在 J2EE_CLASSPATH 的環境變量中。 4。J2EE_CLASSPATH 環境變量 J2EE server通過JDBC驅動連接數據庫。通通過J2EE_CLASSPATH 的環境變量定位驅動文件(.jar文件)的位 置。你可以在啟動j2ee前在命令行設置這個變量。但是我們推薦你在腳本中設置J2EE_CLASSPATH 變量。編輯用 戶配置文件在安裝的過程中是必須的一步。在unix中,用戶配置文件是 /bin/userconfig.sh,Windows nt中是 bin/userconfig.bat 注意:你應該同時在CLASSPATH環境變量中去掉驅動文件(.jar文件)。 5。JDBC 1.0 驅動 為了配置jdbc1.0驅動,編輯config/default.propertIEs 文件的jdbc.drivers 和 jdbc.datasources兩個 屬性值。再次要注意的是驅動文件必須包含在J2EE_CLASSPATH環境變量中。 jdbc.drivers 屬性 jdbc.drivers 屬性的值是有一系列的冒號分割的jdbc驅動的類名。格式如下: jdbc.drivers=
:: . . . 例如: jdbc.drivers=oracle.jdbc.driver.OracleDriver:testutil.MyDriver jdbc.datasources 屬性值 jdbc.datasources 屬性值由兩部分組成,一個是datasource的jndi的名字,一個是數據庫的url。典型的 情況是:jndi名字是數據庫的邏輯名字,rul指定數據庫的實際位置。jndi名字和url都是在ejb編碼的過程中指 定的。rul的格式,請參照jdbc驅動提供商的文檔。 jdbc.datasources 的語法如下: jdbc.datasources=|||. . . |符號有兩個作用。第一,它隔開幾個jndi_datasource;第二,它隔開每一個jndi_datasource中的 jndi_datasource> 和 元素. jndi_datasource元素的語法如下: jdbc/ 由jdbc關鍵字開頭,jndi_name是在jndi目錄中指定的datasouce名字。 例如: jdbc.datasources=jdbc/Oracle|jdbc:Oracle:thin@rtc:1521:acct|jdbc/MyDB|jdbc:test 6。支持JTA的JDBC2.0驅動 配置JTA的JDBC2.0的驅動,你需要設置以下屬性的值: jdbc20.datasources xadatasource..jndiname xadatasource..classname xadatasource..dbuser xadatasource..dbpassWord xadatasource..prop. 同時你也必須在J2EE_CLASSPATH 環境變量中包括jdbc驅動文件。 jdbc20.datasources 屬性 jdbc20.datasources 屬性的值和jndi名字連接,用於定位datasouce的位置(它就是lookup方法的參數) 。 jdbc20.datasources 的語法如下: jdbc20.datasources=||| |的作用有兩個,第一,隔開jndi_datasource 和並組成一對,第二,隔開每一對的 jndi_datasource> 、元素。 和 jndi_XA_datasource有相同的語法: jdbc/ jdbc關鍵字開頭。jndi_name是datasource名字,這個名字指向jndi目錄。 例如: jdbc20.datasources=jdbc/Merant|jdbc/XAMerant|jdbc/Finch|jdbc/XAFinch xadatasource屬性 xadatasource..jndiname 屬性指定XA DataSource的jndi名字。語法如下: xadatasource..jndiname=jdbc/ n代表每一組xadatasource。第一個jdbc2.0驅動n為0,下一個是1,2等等。jndi_XA_datasource元素和 jdbc20.datasources 指定的值對應。 The xadatasource..dbuser 和 xadatasource..dbpassWord 屬性指定數據庫用戶和密碼。通常該用 戶具有管理員的權限(更多的信息請看 2222 The distributed.transaction.recovery )。 xadatasource..prop. 指定和特定的屬性值關聯的值。實際的值可能是jdbc驅動。 例如: xadatasource.0.jndiname=jdbc/XAMerant xadatasource.0.classname=com.merant.sequelink.jdbcx.datasource.SequeLinkDataSource xadatasource.0.prop.url=jdbc:sequelink://mypc:5000/[Oracle] 7。事務 你可以編輯config/default.propertIEs 文件控制事務發生和超時設置。 distributed.transaction.recovery 屬性 這個屬性控制分布事物是否發生。入這些事物可以發生的化,下面的條件必須滿足: 跨庫操作時的事物范圍。 J2EE程序通過jdbc2.0 JTA驅動訪問數據庫 當故障發生的時候,事物的各個的組成部分可以按照符合兩段提交協議的方式提交或回滾。 事物發生的時候,server重新啟動後事物可以提交或回滾。 distributed.transaction.recovery的值為true或者false。j2ee安裝後默認為false。 distributed.transaction.recovery=false transaction.time屬性 在應用container-managed 事物的ejb中,你可以控制事物超時的間隔通過設置transaction.timeout的值 。例如: transaction.timeout=5 在設置以後,如果事物在5秒內沒有完成,j2ee事物管理器將回滾它。 當J2EE第一次安裝的時候,timeout的值時0代表沒有超時。 只有使用container-managed 管理事物的ejb受到timeout的影響。至於在bean-managed和JTA transactions 中你可以引用 UserTransaction 的 setTransactionTimeout方法。同時你也可以在其他組建中 引用setTransactionTimeout方法:比如servlets和JSP。 8。端口 j2ee需要tcp/ip端口。修改config目錄下的相應文件可以修改端口號。下表是端口號和相應的文件。 EJB 9191 ejb.properties http.port=9191 HTTP 8000 web.properties port=8000 HTTPS 7000 web.properties https.port=7000 Naming and Directory 1050 orb.properties port=1050 9191 端口用於提供client下載需要的stub類 8000 提供http服務 7000 提供https服務 1050 基於orb的jndi名字服務使用的端口 9。日志文件 j2ee server有幾個日志文件。默認這些文件在logs目錄下。編輯config/default.properties 文件中的 log.directory 屬性可以更改默認目錄。 log.directory=logs 同時你也可以編輯default.propertIEs 文件更改日志文件的名字。例如:你可以修改log.output 屬性的 值來修改the output.log 文件的名字。 一般來說,日志文件決定於啟動j2ee的模式。(single還是multiple VM (virtual Machine) 模式) Single VM 日志文件 默認的情況是Single VM 模式。在這種情況下,日志文件位於 $J2EE_HOME///ejb logs是在default.properties 文件中log.directory 屬性指定的。host元素是計算機名稱。 生成下列文件。 system.out system.err event.log output.log error.log system.out 和system.err文件包括ejb中 System.out 和 System.err的輸出。如果你運行j2ee -verbose 參數,輸出被寫到stdout(標准輸出) 和stderr(標准錯誤。輸出)。system.out 和 system.err日志文件不 創建。只有config/auth.propertIEs 文件中audit屬性值為true時audit.lo才創建。 Multiple VM 日志 如果你用j2ee -mutiVM啟動server,ejb和http服務在自己的虛擬機以單獨的服務啟動。每一個depploy的 應用程序也在自己的虛擬機中運行。日志文件和上述的一樣,但是存放的目錄不同。 目錄如下: EJB $J2EE_HOME//ejb/ejbd HTTP $J2EE_HOME//ejb/httpd deployed application $J2EE_HOME//ejb/ web server日志 編輯web.propertIEs文件中的內容,可以改變由web server創建的日志文件的名字。 10。安全 未授權用戶 對於j2ee來說,當有未授權的用戶試圖調用ejb container的時候,j2ee必須存在一般意義上的未授權用戶 存在。在J2EE中這個用戶名字是guest,密碼是guest123。你可以在auth.propertIEs 文件中修改用戶名和密碼 。 default.principal.name=guest default.principal.passWord=guest123 Keystore密碼 如果用戶使用公鑰訪問https,認證信息放在/.keystore 文件中。同時user-home是 System.getProperty("user.home")的返回值。 keystore是一個典型的密碼文件。默認的密碼是changeit。可以在web.propertIEs 文件中修改 keystore.passWord 屬性的值來改變密碼。 ANYONE 角色 在application deployment工具的security面板中,默認的情況下方法分配給ANYONE 角色。這樣的結果 是所有的用戶和組都可以調用它。如果你沒有影射到一個特定的角色,每一個用戶和用戶都可以調用它。可以 在auth.propertIEs 文件中設置anyone.role.name 的值來改變默認anyone角色。 鈍化發生的條件:內存限制 當ejb container開始鈍化一個ejb的時候,它把ejb保存在附屬存儲中並且試圖重新分配內存。默認的情況 下,如果內存使用超過128m的時候鈍化開始發生。可以編輯config/default.propertIEs 文件中 passivation.threshold.memory 屬性的值來修改默認值。 passivation.threshold.memory=128000000 值必須是一個正的整數。當你減少這個值的時候鈍化現象回經常發生。 jndi name server host 如果jndi name server和J2EE server不在同一個機器上,你必須改變config/orb.properties 文件中host 屬性的值。 host=localhost HTTP 文檔根 默認的情況下,http和https服務的文檔是public_html。你可以編輯web.propertIEs 文件中documentroot 屬性的值來改變它。 documentroot=public_Html/