转自: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的一员。

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版也开始走开源路线了。

JBOSS版本选择

JBOSS安装

 

JBOSS从4.X开始内嵌Tomcat,并且它内嵌的Tomcat是一个高度优化后的Tomcat,无论是在稳定性、线程数、连接池上都是被高度源码级优化过的。

一般我们选择JBOSS EAP6.4这个版本,JBOSS从8.x后不再叫JBOSS了,而是改名叫WildFly。

JBOSS官方下载地址

JBOSS目录结构解释

JBOSS基本配置-端口

在JBOSS EAP6的bin目录下,输入./standalone.sh即可启动JBOSS EAP6

在启动过程中如果发现端口冲突的问题可以修改$JBOSS_HOME/standalone/configuration/standalone.xml,把该文件中的端口改成相应的地址即可,如下图所示:

如果你要终止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文件中如下面截图。

你可以把它改成<any-address/>也可以指定IP(为了安全),一般来说management功能如果你不是在开发、实验机,那我不建议开启“远程可访问”。

初始化用户名密码

 

我们打开一个IE输入http://192.168.0.101:9990/,此时我们会得到如下的画面

这是因为我们没有配置默认的admin用户,在jboss启动的情况下按照如下步骤:

  1. cd /opt/jboss/bin
  2. ./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
  • 新建一个module.xml,使其内容如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <module xmlns="urn:jboss:module:1.1" name="com.mysql">
  3. <properties>
  4. <property name="jboss.api" value="public"/>
  5. </properties>
  6. <resources>
  7. <resource-root path="mysql-connector-java-5.1.38.jar"/>
  8. <!-- Insert resources here -->
  9. </resources>
  10. <dependencies>
  11. <module name="javax.api"/>
  12. <module name="javax.transaction.api"/>
  13. <module name="javax.servlet.api" optional="true"/>
  14. </dependencies>
  15. </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>”段

  1. <datasources>
  2. <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
  3. <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
  4. <driver>h2</driver>
  5. <security>
  6. <user-name>sa</user-name>
  7. <password>sa</password>
  8. </security>
  9. </datasource>
  10. <drivers>
  11. <driver name="h2" module="com.h2database.h2">
  12. <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
  13. </driver>
  14. </drivers>
  15. </datasources>

可以看到,此处分成两段:

  • Datasource的基本描述
  • 数据库驱动Module的描述 ,其中module=“com.h2database.h2”指向的为:D:\$JBOSS_HOME\modules\system\layers\base\下的com\h2database\h2

按照这个原理,我们来改写我们的standalone.xml文件吧。

  1. <datasources>
  2. <datasource jndi-name="java:/comp/env/jdbc/jbpm" pool-name="DroolsDS" enabled="true" use-java-context="true">
  3. <connection-url>jdbc:mysql://192.168.0.101:3306/guvnor?autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useUnicode=true&characterEncoding=UTF-8</connection-url>
  4. <driver>mysql</driver>
  5. <security>
  6. <user-name>drools</user-name>
  7. <password>aaaaaa</password>
  8. </security>
  9. </datasource>
  10. <drivers>
  11. <driver name="mysql" module="com.mysql">
  12. <driver-class>com.mysql.jdbc.Driver</driver-class>
  13. <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
  14. </driver>
  15. </drivers>
  16. </datasources>

改完后保存

为了验证我们的修改是正确的,我们可以进入http://192.168.0.101:9990的JBOSS图形化console

当你看到弹出:
Successfully connected to…的字样说明我们的数据库连接建立正确。

在Jboss中安装Oracle数据库

 

这次我们直接使用jboss自带console来GUI的建立一条oracle连接。

  • 建立module.xml
  • 准备oracle驱动
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <module xmlns="urn:jboss:module:1.1" name="com.oracle">
  3. <properties>
  4. <property name="jboss.api" value="public"/>
  5. </properties>
  6. <resources>
  7. <resource-root path="ojdbc6.jar"/>
  8. <!-- Insert resources here -->
  9. </resources>
  10. <dependencies>
  11. <module name="javax.api"/>
  12. <module name="javax.transaction.api"/>
  13. <module name="javax.servlet.api" optional="true"/>
  14. </dependencies>
  15. </module>
  • 修改standalone.xml-增加一个oracle driver
  1. drivers>
  2. <driver name="mysql" module="com.mysql">
  3. <driver-class>com.mysql.jdbc.Driver</driver-class>
  4. <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
  5. </driver>
  6. <driver name="oracle" module="com.oracle">
  7. <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
  8. <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
  9. </driver>
  10. </drivers>
  • 重启JBOSS
 
使用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.
#

加入:

  1. 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

JBoss 实战(1)的更多相关文章

  1. JBoss 实战(2)

    转自:https://www.cnblogs.com/aiwz/p/6154591.html JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Contai ...

  2. JBoss环境搭建及部署Web项目

    http://blog.csdn.net/pop303/article/details/7210290 赶在年前学习了一下JBOSS,之前觉得JBOSS相关资料会有很多,不过现在发现很少,在亚马逊出也 ...

  3. 3000本IT书籍下载地址

    http://www.shouce.ren/post/d/id/112300    黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299    黑 ...

  4. 【转】Maven实战(四)---多模块项目---JBOSS部署问题

    原文出自于:http://blog.csdn.net/liutengteng130/article/details/41622681      感谢! 这几天在搭框架中仅仅是JBOSS就遇到了很多问题 ...

  5. JBOSS EAP实战(2)-集群、NGINX集成、队列与安全

    JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Container,因此它和任何一种成熟的企业级中间件一样具有Thread Group的概念.所谓Thre ...

  6. JBOSS EAP实战(1)

    JBOSS的诞生 1998年,在硅谷SUN公司的SAP实验室,一个年轻人正坐在电脑前面思考,然后写着什么东西.不,他没有在写程序,他在写辞呈.他正在做出人生的一个重大决定:他要辞掉在SUN的这份工作, ...

  7. jboss反序列化漏洞实战渗透笔记

    一.利用shodan,fofa或谷歌搜索关键字:8080/jmx-console/ 二.下载java反序列化终极测试工具进行验证漏洞 三.记住User Current Directory:  C:\j ...

  8. 【实战】JBOSS反序列化Getshell

    一.JBOSS4.0.5_GA,5.x,6.x 需要JavaDeserH2HC(https://github.com/joaomatosf/JavaDeserH2HC) 操作起来 javac -cp ...

  9. 如何让jboss eap 6.2+ 的多个war应用共享 jar 包?

    weblogic有一个很贴心的功能,允许把多个war应用共同依赖的jar包,打包一个单独的war,以libary方式部署,然后各应用在weblogic.xml里声明引用该libary即可,这样可大大减 ...

随机推荐

  1. C# 委托和接口

    能用委托解决的事情,接口也都可以解决.如下所示: public static void Main() { , , , }; Util.TransformAll(values, new Squarer( ...

  2. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  3. Day 39 管道 、数据共享与地址池

    参考张磊同学的博客 http://www.cnblogs.com/chongdongxiaoyu/p/8658379.html 一.管道 #创建管道的类: Pipe([duplex]):在进程之间创建 ...

  4. 《JAVA与模式》之原型模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办 ...

  5. avalon的使用与总结

    avalon是前端MVVM框架,将所有前端代码彻底分成两部分,视图的处理通过绑定实现(angular有个更炫酷的名词叫指令),业务逻辑则集中在一个个叫VM的对象中处理.我们只要操作VM的数据,它就自然 ...

  6. 通过sessionStorage来根据屏幕宽度变化来加载不同的html页面

    因为项目需要,分别写了移动端和PC端的两个html页面,现在需要根据不同的屏幕宽度来加载对应的页面. 先说一下本人的思路-- 刚开始我直接在加载页面的时候判断屏幕宽度,然后加载相应的页面,大家是不是也 ...

  7. scroll事件实现监控滚动条改变标题栏背景透明度(zepto.js )

    今天做了一个类似于手机端京东首页的页面,效果图如下: 刷新页面的时候,标题栏(也就是搜索栏),背景是透明的,当我们往下滑的时候,可以改变标题栏的背景透明度(渐变效果): 当标题栏滑过轮播图后,透明度就 ...

  8. P2149 Elaxia的路线

    P2149 Elaxia的路线 题意简述: 在一个n(n<=1500)个点的无向图里找两对点之间的最短路径的最长重合部分,即在保证最短路的情况下两条路径的最长重合长度(最短路不为一) 思路: 两 ...

  9. JavaScript 闭包解决计数器问题

    JavaScript 闭包解决计数器问题 var add = (function () { var counter = 0; return function () {return counter += ...

  10. if嵌套语句 shell脚本实例 测试是否闰年

    在 if 语句里面,你可以使用另外一个 if 语句.只要你能逻辑管理 你就可以使用多层嵌套. 以下是一个测试闰年的例子: #!/bin/bash # This script will test if ...