近期由于公司有意向在未來將目前的一個大型產品從weblogic移植到glassfish,因此提前學習glassfish以做好準備。
首先從下載安裝開發,學習如何搭建glassfish的開發環境。
一. 下載安裝運行
1) 下載
從官網https://glassfish.dev.java.net/public/downloadsindex.html下載,目前最新的release版本是GlassFish Server v2 Update Release 2 (UR2)。v3只有
Prelude版本,正式的v3估計要到09年一季度。我下載的是glassfish-installer-v2ur2-b04-windows.jar的版本,54M而已,比weblogic小太多了。
2) 安裝
安裝方式遵循官方建議(https://glassfish.dev.java.net/downloads/v2ur2-b04.html中的"Instructions to unbundle and configure GlassFish")
1. copy 下載的文件到要安裝的目錄,比如c:\soft
2. 執行java -Xmx256m -jar filename.jar
按照安裝程序的提示進行。
3. 運行ant腳本 lib\ant\bin\ant -f setup.xml
4. 完成后,在原目錄下會出現一個glassfish目錄,所有文件都在里面
在安裝前請先確保jdk已經正確安裝,JAVA_HOME屬性設置正確.
3) 系統配置
1. 將install-dir\bin加入到Path路徑
2. 添加新的環境變量 AS_ADMIN_USER,并將其設置為在安裝過程中指定的管理員用戶名。
這個是sun的快速入門指南中的要求,但是實際操作中發現不設置也可以正常啟動glassfish。
4) 運行
需要使用到glassfish\bin\目錄下的asadmin.bat。
方法1) 直接鼠標雙擊,彈出窗口中輸入start-domain domain1,如果成功會看到啟動信息。
方法2) 運行 -> cmd 進入命令行,進入glassfish\bin目錄,執行asadmin start-domain domain1
5) 檢驗
打開瀏覽器訪問http://localhost:8080/,或者訪問glassfish的console http://localhost:4848/.
6) 以下信息是glassfish安裝后的默認配置
domain.name=domain1
instance.name=server
admin.user=admin
admin.password=adminadmin
admin.port=4848
instance.port=8080
orb.port=3700
imq.port=8686
https.port=8181
二. eclipse的glassfish插件
eclipse的glassfish插件的下載安裝可以參考官方文檔,基本照著做就可以了。
https://glassfishplugins.dev.java.net/eclipse34/index.html
三.搭建自己的開發環境
1. 新建admin用戶
使用默認的用戶名密碼admin/adminadmin登錄console,在Configuration -> Security -> Realms -> admin-realm 下點"manager users",添加自己需要的新admin用戶。
示例如下:
User ID = sigadmin
Group List = asadmin
password = sigadmin
2. 新建開發需要使用的domain
默認安裝時會建立domain1,為了方便我們需要自行建立屬于自己的domain,尤其對于公司團隊開發,往往一臺開發機器上安裝一個glassfish,不同開發人員每人都有屬于自己的domain來開發測試。
2.1) create domain
執行以下命令:
asadmin create-domain --user sigadmin -e --passwordfile=password.properties --portbase 34000 --profile developer domain_340
其中--passwordfile=password.properties指明密碼文件,否則asadmin命令會以交互方式要求輸入相應密碼。password.properties文件內容如下:
AS_ADMIN_PASSWORD=sigadmin
AS_ADMIN_ADMINPASSWORD=sigadmin
AS_ADMIN_USERPASSWORD=sigadmin
AS_ADMIN_MASTERPASSWORD=sigadmin
--portbase 34000指定當前新建的domian的portbase,--portbase 34000的意思就是該domain的各個端口以34000為基數增加,從日志中可以看到:
Using port 34048 for Admin.
Using port 34080 for HTTP Instance.
Using port 34076 for JMS.
Using port 34037 for IIOP.
Using port 34081 for HTTP_SSL.
Using port 34038 for IIOP_SSL.
Using port 34039 for IIOP_MUTUALAUTH.
Using port 34086 for JMX_ADMIN.
和前面默認建立的domain1的端口對照,可以看到基本是每個端口都有一個基數,然后加portbase就得到最終使用的端口好。
portbase=34000 default 基數
Admin 34048 4848 48
HTTP Instance 34080 8080 80
JMS 34076
IIOP 34037 3700 37
HTTP_SSL 34081 8181 81
IIOP_SSL 34038
IIOP_MUTUALAUTH 34039
JMX_ADMIN 34086 8686 86
使用--portbase比較方便記憶,推薦這樣使用,避免逐個指定不同端口。為了方便記憶,domain的名字取名為domain_340以對應。
2.2)start domain
執行命令:
asadmin start-domain -e --passwordfile=password.properties domain_340
2.3) stop domian
執行命令:
asadmin stop-domain -e domain_340
2.4) delete domain
執行命令:
asadmin delete-domain -e domain_340
注意必須在domain處于stop的情況下才能delete。
為了方便,提供一個簡單的ant腳本處理以上命令,直接通過exec來調用asadmin.bat:
ant.build
<?xml version="1.0" encoding="UTF-8"?>
<project name="GfAsadminDemo" default="listDomains" >
<description>demo of how to use adadmin command</description>
<property file="build.properties" />
<target name="listDomains">
<exec executable="asadmin.bat">
<arg line="list-domains -e"/>
</exec>
</target>
<target name="createDomain">
<echo>begin to create domain ${domain.name}</echo>
<exec executable="asadmin.bat" dir="." failifexecutionfails="true">
<arg line="create-domain --user ${AS_ADMIN_USER} -e --passwordfile=password.properties --portbase ${domain.baseport} --profile developer ${domain.name}"/>
</exec>
<echo>finish to create domain ${domain.name}</echo>
</target>
<target name="startDomain">
<echo>begin to start domain ${domain.name}</echo>
<exec executable="asadmin.bat" dir="." failifexecutionfails="true" >
<arg line="start-domain -e --passwordfile=password.properties ${domain.name}"/>
</exec>
<echo>finish to start domain ${domain.name}</echo>
</target>
<target name="stopDomain">
<echo>begin to stop domain ${domain.name}</echo>
<exec executable="asadmin.bat" dir="." failifexecutionfails="true">
<arg line="stop-domain -e ${domain.name}"/>
</exec>
<echo>finish to stop domain ${domain.name}</echo>
</target>
<target name="deleteDomain">
<echo>begin to delete domain ${domain.name}</echo>
<exec executable="asadmin.bat" dir=".">
<arg line="delete-domain -e ${domain.name}"/>
</exec>
<echo>finish to delete domain ${domain.name}</echo>
</target>
</project>
build.properties
domain.name=domain_340
domain.baseport=34000
AS_ADMIN_USER=sigadmin
(更適當的方法是通過asant來直接操作,不過上面的ant腳本只是為了演示asadmin的使用。)
ps,解釋一下為什么考慮從weblogic遷移道glassfish:
1. 經濟原因
畢竟glassfish不要錢,而weblogic價格不菲。我們做的產品是面對國際市場的各國電信運行商,總不可能讓他們從盜版吧。因此weblogic會帶來成本問題。
2. 客戶需求
這個其實也和經濟原因有關,因為成本問題,因此有客戶希望我們能將產品遷移到glassfish。而且最近有一個大客戶明確要求使用glassfish,為了在未來有機會拿到他們的單,glassfish的使用就變得很現實了。
3. 技術原因
weblogic目前對新技術的支持可以說是很不積極的,呵呵,可能weblogic有它的考慮,我們不深入討論。開源的免費的技術新潮的glassfish,尤其是即將發布的v3版本,很有吸引力。
glassfish對于開發人員也更加友好,沒有weblogic的臃腫與龐大,尤其啟動速度太有優勢了
4) 個人喜好
這個就純屬個人喜歡,坦白說我對weblogic的上述表現非常厭惡,我個人就比較討厭大而滿的東西,weblogic和我的美學完全不相合,我學它用它只是為了工作。當然這個是很小的原因,不過似乎公司和我抱有類似想法的開發人員不少,因此還是可以形成一個不算太小的聲音。
當然,最終公司是否會下定決心將我們那個巨無霸級別的產品遷移道glassfish上,還有很多很多的東西需要考慮和權衡,技術的,非技術的都有,目前只是處于可行性分析階段。