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