在WildFly中运行多个standalone模式的实例
WildFly作為一款優(yōu)秀的EJB容器,其前身為JBoss AS。JBoss作為一款開(kāi)源的應(yīng)用服務(wù)器,被廣泛的應(yīng)用在各種項(xiàng)目當(dāng)中。假設(shè)我們現(xiàn)在有這樣一個(gè)項(xiàng)目,他是以standalone的模式運(yùn)行在WildFly中,且這個(gè)項(xiàng)目在實(shí)際產(chǎn)品環(huán)境中需要被部署成多個(gè)實(shí)例,每個(gè)實(shí)例都會(huì)有不同的服務(wù)對(duì)象,比如不同的國(guó)家,不同角色的用戶等等。針對(duì)于不同的服務(wù)對(duì)象,在后臺(tái)的配置也會(huì)有些許的不同,比如需要連接不同的數(shù)據(jù)庫(kù)等。
?
面對(duì)這種需求,也許你首先考慮到的是我們可以為不同的服務(wù)對(duì)象編譯發(fā)行不同的發(fā)布包,這樣做也許很直觀,但是在實(shí)際交付過(guò)程中卻很難行得通。首先,不同的實(shí)例也許需要加載一些不同的配置,但是這些配置文件的名字和路徑都是都是相對(duì)固定的,也就是說(shuō)你如果想針對(duì)不同的實(shí)例去加載各自配置文件,你首先需要修改配置,配置文件名甚至路徑等等,然后在代碼中做種相應(yīng)的修改去加載他們,這無(wú)形中大大的增加了了維護(hù)的開(kāi)銷。其次,如果一旦服務(wù)的對(duì)象很多,那么久意味著需要交付的發(fā)行包也會(huì)有許多,這無(wú)形中會(huì)增加項(xiàng)目發(fā)布的開(kāi)銷。最后,多個(gè)項(xiàng)目實(shí)例放在同一個(gè)WildFly的instance中,也許會(huì)遇到一些未知的問(wèn)題,比如端口沖突等等,這也會(huì)潛在的增加運(yùn)維的開(kāi)銷和程序的不穩(wěn)定性。
?
那么有沒(méi)有一種辦法能在不增加開(kāi)銷基礎(chǔ)上解決這個(gè)問(wèn)題呢?答案就是我們可以通過(guò)在WildFly中運(yùn)行多個(gè)standalone模式的實(shí)例,然后在每個(gè)實(shí)例中都運(yùn)行著我們的項(xiàng)目,再對(duì)不同的實(shí)例里項(xiàng)目的配置文件進(jìn)行相應(yīng)的修改(比如數(shù)據(jù)庫(kù)連接字符串)。這樣我們僅僅關(guān)注具體配置項(xiàng)的差異即可,不需要修改代碼,也不需要關(guān)心是否有端口沖突問(wèn)題,更不需要發(fā)行多個(gè)發(fā)布包。這個(gè)solution聽(tīng)起來(lái)是不是很誘人呢?
?
在進(jìn)入正題之前我假設(shè)你已經(jīng)對(duì)JBoss或者WildFly已經(jīng)有了一定的了解,且已經(jīng)可以正確運(yùn)行你機(jī)器上WildFly和你的項(xiàng)目。本文中,我用來(lái)演示的WildFly的版本為9.0.2.Final。
?
如果你的WildFly和你的項(xiàng)目都是okay的話,那么你的項(xiàng)目應(yīng)該是在standalone目錄中。首先我們需要把項(xiàng)目的服務(wù)停掉,然后拷貝standalone到任意的一個(gè)文件夾,改個(gè)名字(比如standalone1)然后再拷回WildFly的根目錄當(dāng)中。
?
這個(gè)時(shí)候你的standalone1目錄中也包含了一個(gè)和standalone一樣的項(xiàng)目,接下來(lái)我們進(jìn)入standalone1目錄中修改一下你所需要修改的配置文件,比如數(shù)據(jù)庫(kù)連接等等。修改完畢之后我們進(jìn)入WildFly的bin目錄,在里面建立兩個(gè)bat文件start.bat和start1.bat。然后為start.bat添加如下命令
?
Java代碼???
同理,start1.bat文件的內(nèi)容修改為
?
Java代碼???
這里我們稍微解釋一下這個(gè)命令:
- ./standalone.bat這個(gè)是standalone模式的下的啟動(dòng)文件,不多說(shuō)。
- -c standalone-full.xml是你自定義的WildFly的配置文件(這里我們用standalone-full.xml來(lái)舉例子),也不多說(shuō)。
- -Djboss.server.base.dir=./../standalone1是指定你這個(gè)WildFly的instance的根目錄。
- -Djboss.socket.binding.port-offset=100指的是你這個(gè)實(shí)例針對(duì)于WildFly標(biāo)準(zhǔn)端口的偏移量。
編輯完成先后啟動(dòng)著兩個(gè)bat文件。
start.bat
?
start1.bat
?
從控制臺(tái)上我們可以看出,兩個(gè)WildFly instances的Amdin Console分別是
http://127.0.0.1:9990?和?on http://127.0.0.1:10090
由此可見(jiàn)端口確實(shí)有了100的偏移量。。至此我們完成了WildFly多個(gè)實(shí)例的配置, 也就變向的實(shí)現(xiàn)我們文中最初的那種需求。
?
?同理我們也為不同的instance添加shutdown的命令。
?
Java代碼????
此刻你的心情是不是非常的輕松愉快呢?
?
轉(zhuǎn)載于:https://www.cnblogs.com/bigben0123/p/5818607.html
總結(jié)
以上是生活随笔為你收集整理的在WildFly中运行多个standalone模式的实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Nginx初探
- 下一篇: 华硕yx570 bios怎么设中文 华硕