轉自:https://www.cnblogs.com/aiwz/p/6154594.html
JBOSS的誕生
1998年,在硅谷SUN公司的SAP實驗室,一個年輕人正坐在電腦前面思考,而後寫着什麼東西。
不,他沒有在寫程序,他在寫辭呈。他正在作出人生的一個重大決定:
他要辭掉在SUN的這份工做,投身到open source的開發。旁邊好多朋友在勸他,這樣的作法是"moving down the food chain"(應該是丟掉鐵飯碗的意思),這是他整個職業生涯的下坡路。
可是這個年輕人卻義無反顧地微笑着,眼睛裏充滿着自信,他相信幾年之後他會爲他今天的決定自豪,他相信這不是他職業生涯的下坡路,而是他真正的成功職業生涯的開始。
這個年青人就是Marc Fleury,就是他一手建立了JBoss,這個全世界都在使用的開源應用服務器;是他推進整個Java開源社區的發展。
JBOSS和他的架構師:
電影The Maxtrix裏那句經典臺詞,還記得Neo被Morpheus帶救到一個小房子裏,而後掏出兩顆藥丸的場景嗎?
:"If you take the red pill I'll show you how deep the rabbit hole goes. If you take the blue pill you stay in corporate land and you believe whatever you want to believe.「
JBoss的整體架構設計師Bill Burke就是這樣被招安過來的。當時Bill Burke仍是在作一個商業應用,買不起BEA的東西,就在google上搜到了JBoss,發現了一些bug,修改完後發了個email給Marc Fleury,Marc Fleury問完Bill的狀況後發了一條只有一句的話的Email:"Do want to take the red pill?"。因而Bill Burke就成了JBoss的一員。html
JBOSS開始輝煌
2001年,當我仍是一個屌絲時,當時啃着和天書通常的EJB2.X,當好不容易寫完一個EJB時使用當時的WebLogic5.x進行Deploy時,偶看到了讓人崩潰的一幕的出現。
個人那臺MMX166出現了out of memory。
在當時,32MB的內存已經算很大了,但是在2001年在同一臺機器上又裝JBUILDER又裝Weblogic,佈署一個EJB的實體BEAN在它反向生成數據庫表時,須要用掉50多MB的內存,這在當時顯然是一個奢侈的行爲。
因而我當時開始在網上進行瘋狂搜索EJB Container即J2EE APP Server,忽然咱們發現了一個東西,它在一天內被下載量就超過了100萬。
這就是JBOSS3.X。
JBOSS推向真正企業級應用的正是jboss3.2.x版,當時只有20兆不到的一個小東西能夠秒級佈署EJB而且能夠真正實現跨平臺,而它的啓動在當時只須要11MB。我也是在當時認識了JBOSS。
JBOSS的性能不可不說至關的優異,一切熱佈署,一切簡單化,就好像它生爲J2EE所服務同樣。
JBOSS經歷了3.2.X以及4.X並於JBOSS5.X後完成了JBOSS最終的變形,即JBOSS步入了Jboss7.x和JBOSS EAP的階段。
一開始JBOSS7.X走開源路線,JBOSS EAP6.X走商業路線。
隨着開源社區的不斷努力 ,最終於JBOSSEAP6.X後JBOSS EAP版也開始走開源路線了。java
JBOSS版本選擇
![](http://static.javashuo.com/static/loading.gif)
JBOSS安裝
JBOSS從4.X開始內嵌Tomcat,而且它內嵌的Tomcat是一個高度優化後的Tomcat,不管是在穩定性、線程數、鏈接池上都是被高度源碼級優化過的。
通常咱們選擇JBOSS EAP6.4這個版本,JBOSS從8.x後再也不叫JBOSS了,而是更名叫WildFly。
JBOSS官方下載地址mysql
![](http://static.javashuo.com/static/loading.gif)
JBOSS目錄結構解釋
![](http://static.javashuo.com/static/loading.gif)
JBOSS基本配置-端口
在JBOSS EAP6的bin目錄下,輸入./standalone.sh便可啓動JBOSS EAP6web
![](http://static.javashuo.com/static/loading.gif)
在啓動過程當中若是發現端口衝突的問題能夠修改$JBOSS_HOME/standalone/configuration/standalone.xml,把該文件中的端口改爲相應的地址便可,以下圖所示:sql
![](http://static.javashuo.com/static/loading.gif)
若是你要終止JBOSS也很簡單,直接ctrl + c便可。數據庫
JBOSS基本配置
容許遠程訪問
JBOSS不管什麼版本,從一誕生開始默認只支持localhost的訪問,包括基於JNDI的訪問也只支持本地訪問。
好比說JBOSS EAP的圖形化Console,http://ip:9990。
若是在此你用的是http://localhost:9990,你能夠訪問!
若是在此你用的是http://192.168.0.101:9990, 它會告訴你沒法訪問。
請修改$JBOSS_HOME/standalone/configuration/standalone.xml文件中以下面截圖。api
![](http://static.javashuo.com/static/loading.gif)
你能夠把它改爲<any-address/>也能夠指定IP(爲了安全),通常來講management功能若是你不是在開發、實驗機,那我不建議開啓「遠程可訪問」。安全
初始化用戶名密碼
咱們打開一個IE輸入http://192.168.0.101:9990/,此時咱們會獲得以下的畫面服務器
![](http://static.javashuo.com/static/loading.gif)
這是由於咱們沒有配置默認的admin用戶,在jboss啓動的狀況下按照以下步驟:
架構
- cd /opt/jboss/bin
- ./add-user.sh
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
咱們增長一個admin的用戶,記住:admin的密碼必須爲8位字符+數字混合
![](http://static.javashuo.com/static/loading.gif)
在上面的步驟中咱們:
- 增長了一個用戶admin,它的密碼爲:password_1
- 爲admin分配了admin,administrator,root三個超級用戶的權限
如今,咱們從新在遠程使用IE訪問http://192.168.0.101:9990
![](http://static.javashuo.com/static/loading.gif)
當咱們輸入了剛纔建立的用戶名和密碼後咱們就能夠登陸進JBOSS的圖形化管理界面了。
![](http://static.javashuo.com/static/loading.gif)
在Jboss中安裝MySql數據庫驅動與鏈接
雖然從JBOSS EAP起,咱們可使用http://xxx.xxx.xxx.xxx:9990這個圖形化management console來對JBOSS作任何配置(之前所有是基於xml文件的配置)的,可是咱們在練習中仍是使用手改xml的方式,這樣便於咱們對JBOSS的配置印象更深入些。
爲了增長一個數據庫的驅動,咱們須要經歷下面的步驟:
- 在JBOSS下創建相關的數據庫驅動用Module
- 編寫Module Description
- 修改standalone.xml
- 重啓JBOSS
拿MySql爲例:
它的驅動叫:mysql-connector-java-5.1.38.jar
它的Module Layer叫com\mysql(這個名字能夠隨便,你也能夠叫abc\org,通常每一個Module下有一個Main,這是Module的「入口」
Module的Description文件名永遠叫module.xml
按照上面描述:
- 咱們在D:\$JBOSS_HOME\modules\system\layers\base\下創建如此層次的文件夾com\mysql\main。如: D:\$JBOSS_HOME\modules\system\layers\base\com\mysql\main
- <?xml version="1.0" encoding="UTF-8"?>
- <module xmlns="urn:jboss:module:1.1" name="com.mysql">
- <properties>
- <property name="jboss.api" value="public"/>
- </properties>
- <resources>
- <resource-root path="mysql-connector-java-5.1.38.jar"/>
-
- </resources>
- <dependencies>
- <module name="javax.api"/>
- <module name="javax.transaction.api"/>
- <module name="javax.servlet.api" optional="true"/>
- </dependencies>
- </module>
- 將module.xml和mysql-connector-java-5.1.38.jar 所有copy至:D:\$JBOSS_HOME\modules\system\layers\base\com\mysql\main目錄內
![](http://static.javashuo.com/static/loading.gif)
開始修改D:\$JBOSS_HOME\standalone\configuration\standalone.xml文件,找到「<datasources>」段
- <datasources>
- <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
- <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
- <driver>h2</driver>
- <security>
- <user-name>sa</user-name>
- <password>sa</password>
- </security>
- </datasource>
- <drivers>
- <driver name="h2" module="com.h2database.h2">
- <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
- </driver>
- </drivers>
- </datasources>
能夠看到,此處分紅兩段:
- Datasource的基本描述
- 數據庫驅動Module的描述 ,其中module=「com.h2database.h2」指向的爲:D:\$JBOSS_HOME\modules\system\layers\base\下的com\h2database\h2
按照這個原理,咱們來改寫咱們的standalone.xml文件吧。
- <datasources>
- <datasource jndi-name="java:/comp/env/jdbc/jbpm" pool-name="DroolsDS" enabled="true" use-java-context="true">
- <connection-url>jdbc:mysql://192.168.0.101:3306/guvnor?autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useUnicode=true&characterEncoding=UTF-8</connection-url>
- <driver>mysql</driver>
- <security>
- <user-name>drools</user-name>
- <password>aaaaaa</password>
- </security>
- </datasource>
- <drivers>
- <driver name="mysql" module="com.mysql">
- <driver-class>com.mysql.jdbc.Driver</driver-class>
- <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
- </driver>
- </drivers>
- </datasources>
改完後保存
爲了驗證咱們的修改是正確的,咱們能夠進入http://192.168.0.101:9990的JBOSS圖形化console
![](http://static.javashuo.com/static/loading.gif)
當你看到彈出:
Successfully connected to…的字樣說明咱們的數據庫鏈接創建正確。
在Jboss中安裝Oracle數據庫
此次咱們直接使用jboss自帶console來GUI的創建一條oracle鏈接。
- <?xml version="1.0" encoding="UTF-8"?>
- <module xmlns="urn:jboss:module:1.1" name="com.oracle">
- <properties>
- <property name="jboss.api" value="public"/>
- </properties>
- <resources>
- <resource-root path="ojdbc6.jar"/>
-
- </resources>
- <dependencies>
- <module name="javax.api"/>
- <module name="javax.transaction.api"/>
- <module name="javax.servlet.api" optional="true"/>
- </dependencies>
- </module>
- 修改standalone.xml-增長一個oracle driver
- drivers>
- <driver name="mysql" module="com.mysql">
- <driver-class>com.mysql.jdbc.Driver</driver-class>
- <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
- </driver>
- <driver name="oracle" module="com.oracle">
- <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
- <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
- </driver>
- </drivers>
使用http://xxx.xxx.xxx.xxx:9990 進入jboss console界面
使用http://xxx.xxx.xxx.xxx:9990 進入jboss console界面
JBOSS基本參數配置
找到$JBOSS_HOME\bin\目錄下的standalone.conf,在這一段以後:
#PRESERVE_JAVA_OPTS=true
#
# Specify options to pass to the Java VM.
#
加入:
- export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=512m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true -Djboss.modules.policy-permissions=true"
它會覆蓋掉原有standalone.conf和standalone.sh文件中的全部的JAVA_OPTS參數(是全部)
WAR(Web Application)的佈署
在JBOSS中既能夠佈署EAR也能夠佈署WAR包。固然,它也能夠佈署一個文件夾,該文件夾的名字應該爲:myweb.war或者是myee.ear。若是:你佈署的是文件夾如:kie-wb.war,你必需要在同一級目錄下製做一個佈署文件,該文件名必須爲:kie-wb.war.dodeploy。此處,紅色加粗部分名字必須和你的文件夾同名。此文件內容爲「空」,什麼都沒有。JBOSS在啓動時會把這個文件名自動改爲kie-wb.war.deploying。若是佈署成功,該文件名會被自動更名成:kie-wb.war.deployed若是佈署失敗,該文件名會被自動更名成:kie-wb.war.failed