近期由于公司有意向在未來(lái)將目前的一個(gè)大型產(chǎn)品從weblogic移植到glassfish,因此提前學(xué)習(xí)glassfish以做好準(zhǔn)備。
首先從下載安裝開(kāi)發(fā),學(xué)習(xí)如何搭建glassfish的開(kāi)發(fā)環(huán)境。
一. 下載安裝運(yùn)行
1) 下載
從官網(wǎng)https://glassfish.dev.java.net/public/downloadsindex.html下載,目前最新的release版本是GlassFish Server v2 Update Release 2 (UR2)。v3只有
Prelude版本,正式的v3估計(jì)要到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. 執(zhí)行java -Xmx256m -jar filename.jar
按照安裝程序的提示進(jìn)行。
3. 運(yùn)行ant腳本 lib\ant\bin\ant -f setup.xml
4. 完成后,在原目錄下會(huì)出現(xiàn)一個(gè)glassfish目錄,所有文件都在里面
在安裝前請(qǐng)先確保jdk已經(jīng)正確安裝,JAVA_HOME屬性設(shè)置正確.
3) 系統(tǒng)配置
1. 將install-dir\bin加入到Path路徑
2. 添加新的環(huán)境變量 AS_ADMIN_USER,并將其設(shè)置為在安裝過(guò)程中指定的管理員用戶名。
這個(gè)是sun的快速入門指南中的要求,但是實(shí)際操作中發(fā)現(xiàn)不設(shè)置也可以正常啟動(dòng)glassfish。
4) 運(yùn)行
需要使用到glassfish\bin\目錄下的asadmin.bat。
方法1) 直接鼠標(biāo)雙擊,彈出窗口中輸入start-domain domain1,如果成功會(huì)看到啟動(dòng)信息。
方法2) 運(yùn)行 -> cmd 進(jìn)入命令行,進(jìn)入glassfish\bin目錄,執(zhí)行asadmin start-domain domain1
5) 檢驗(yàn)
打開(kāi)瀏覽器訪問(wèn)http://localhost:8080/,或者訪問(wèn)glassfish的console http://localhost:4848/.
6) 以下信息是glassfish安裝后的默認(rèn)配置
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
三.搭建自己的開(kāi)發(fā)環(huán)境
1. 新建admin用戶
使用默認(rèn)的用戶名密碼admin/adminadmin登錄console,在Configuration -> Security -> Realms -> admin-realm 下點(diǎn)"manager users",添加自己需要的新admin用戶。
示例如下:
User ID = sigadmin
Group List = asadmin
password = sigadmin
2. 新建開(kāi)發(fā)需要使用的domain
默認(rèn)安裝時(shí)會(huì)建立domain1,為了方便我們需要自行建立屬于自己的domain,尤其對(duì)于公司團(tuán)隊(duì)開(kāi)發(fā),往往一臺(tái)開(kāi)發(fā)機(jī)器上安裝一個(gè)glassfish,不同開(kāi)發(fā)人員每人都有屬于自己的domain來(lái)開(kāi)發(fā)測(cè)試。
2.1) create domain
執(zhí)行以下命令:
asadmin create-domain --user sigadmin -e --passwordfile=password.properties --portbase 34000 --profile developer domain_340
其中--passwordfile=password.properties指明密碼文件,否則asadmin命令會(huì)以交互方式要求輸入相應(yīng)密碼。password.properties文件內(nèi)容如下:
AS_ADMIN_PASSWORD=sigadmin
AS_ADMIN_ADMINPASSWORD=sigadmin
AS_ADMIN_USERPASSWORD=sigadmin
AS_ADMIN_MASTERPASSWORD=sigadmin
--portbase 34000指定當(dāng)前新建的domian的portbase,--portbase 34000的意思就是該domain的各個(gè)端口以34000為基數(shù)增加,從日志中可以看到:
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.
和前面默認(rèn)建立的domain1的端口對(duì)照,可以看到基本是每個(gè)端口都有一個(gè)基數(shù),然后加portbase就得到最終使用的端口好。
portbase=34000 default 基數(shù)
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比較方便記憶,推薦這樣使用,避免逐個(gè)指定不同端口。為了方便記憶,domain的名字取名為domain_340以對(duì)應(yīng)。
2.2)start domain
執(zhí)行命令:
asadmin start-domain -e --passwordfile=password.properties domain_340
2.3) stop domian
執(zhí)行命令:
asadmin stop-domain -e domain_340
2.4) delete domain
執(zhí)行命令:
asadmin delete-domain -e domain_340
注意必須在domain處于stop的情況下才能delete。
為了方便,提供一個(gè)簡(jiǎn)單的ant腳本處理以上命令,直接通過(guò)exec來(lái)調(diào)用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
(更適當(dāng)?shù)姆椒ㄊ峭ㄟ^(guò)asant來(lái)直接操作,不過(guò)上面的ant腳本只是為了演示asadmin的使用。)
ps,解釋一下為什么考慮從weblogic遷移道glassfish:
1. 經(jīng)濟(jì)原因
畢竟glassfish不要錢,而weblogic價(jià)格不菲。我們做的產(chǎn)品是面對(duì)國(guó)際市場(chǎng)的各國(guó)電信運(yùn)行商,總不可能讓他們從盜版吧。因此weblogic會(huì)帶來(lái)成本問(wèn)題。
2. 客戶需求
這個(gè)其實(shí)也和經(jīng)濟(jì)原因有關(guān),因?yàn)槌杀締?wèn)題,因此有客戶希望我們能將產(chǎn)品遷移到glassfish。而且最近有一個(gè)大客戶明確要求使用glassfish,為了在未來(lái)有機(jī)會(huì)拿到他們的單,glassfish的使用就變得很現(xiàn)實(shí)了。
3. 技術(shù)原因
weblogic目前對(duì)新技術(shù)的支持可以說(shuō)是很不積極的,呵呵,可能weblogic有它的考慮,我們不深入討論。開(kāi)源的免費(fèi)的技術(shù)新潮的glassfish,尤其是即將發(fā)布的v3版本,很有吸引力。
glassfish對(duì)于開(kāi)發(fā)人員也更加友好,沒(méi)有weblogic的臃腫與龐大,尤其啟動(dòng)速度太有優(yōu)勢(shì)了
4) 個(gè)人喜好
這個(gè)就純屬個(gè)人喜歡,坦白說(shuō)我對(duì)weblogic的上述表現(xiàn)非常厭惡,我個(gè)人就比較討厭大而滿的東西,weblogic和我的美學(xué)完全不相合,我學(xué)它用它只是為了工作。當(dāng)然這個(gè)是很小的原因,不過(guò)似乎公司和我抱有類似想法的開(kāi)發(fā)人員不少,因此還是可以形成一個(gè)不算太小的聲音。
當(dāng)然,最終公司是否會(huì)下定決心將我們那個(gè)巨無(wú)霸級(jí)別的產(chǎn)品遷移道glassfish上,還有很多很多的東西需要考慮和權(quán)衡,技術(shù)的,非技術(shù)的都有,目前只是處于可行性分析階段。