转自: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版本选择

JBOSS安装
JBOSS从4.X开始内嵌Tomcat,而且它内嵌的Tomcat是一个高度优化后的Tomcat,不管是在稳定性、线程数、链接池上都是被高度源码级优化过的。
通常咱们选择JBOSS EAP6.4这个版本,JBOSS从8.x后再也不叫JBOSS了,而是更名叫WildFly。
JBOSS官方下载地址mysql

JBOSS目录结构解释

JBOSS基本配置-端口
在JBOSS EAP6的bin目录下,输入./standalone.sh便可启动JBOSS EAP6web

在启动过程当中若是发现端口冲突的问题能够修改$JBOSS_HOME/standalone/configuration/standalone.xml,把该文件中的端口改为相应的地址便可,以下图所示:sql

若是你要终止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

你能够把它改为<any-address/>也能够指定IP(为了安全),通常来讲management功能若是你不是在开发、实验机,那我不建议开启“远程可访问”。安全
初始化用户名密码
咱们打开一个IE输入http://192.168.0.101:9990/,此时咱们会获得以下的画面服务器

这是由于咱们没有配置默认的admin用户,在jboss启动的状况下按照以下步骤:
架构
- cd /opt/jboss/bin
- ./add-user.sh


咱们增长一个admin的用户,记住:admin的密码必须为8位字符+数字混合

在上面的步骤中咱们:
- 增长了一个用户admin,它的密码为:password_1
- 为admin分配了admin,administrator,root三个超级用户的权限
如今,咱们从新在远程使用IE访问http://192.168.0.101:9990

当咱们输入了刚才建立的用户名和密码后咱们就能够登陆进JBOSS的图形化管理界面了。

在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目录内

开始修改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

当你看到弹出:
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