小白入职记(三):初识JBoss应用服务器(二)

上一篇博客主要讲了前三个部分(上一篇博客地址),今天介绍目录及配置文件解析。
1.JBoss是什么
2.与其它服务器(tomcat,apache)比较
3.快速搭建
4.目录及配置文件解析
5.应用部署
6.搭建服务器集群

四、目录及配置文件解析

jboss-eap-6.4版本的目录

  1. 顶级目录和文件
目录功能
appclient/包含应用程序客户容器的配置细节。
bin/包含 Red Hat 企业版 Linux 和微软 Windows 上 JBoss EAP 的启动脚本。
docs/许可证文件、schema 和示例。
domain/配置文件、部署内容和 JBoss EAP 6 以受管域运行时使用的可写入区域。
modules/当有服务请求时 JBoss EAP 6 动态加载的模块。
standalone/配置文件、部署内容和 JBoss EAP 6 以独立服务器运行时使用的可写入区域。
welcome-content/包含默认安装里 8080 端口上的 Welcome 应用程序使用的内容。
jboss-modules.jar加载模块的引导机制。
  1. standalone里的目录
目录功能
configuration/用于独立服务器的配置文件。这些文件是通过管理控制台和 CLI 进行修改的,不能直接进行编辑。
deployments/关于已部署服务的信息。独立服务器包含一个部署扫描器,您可以在这个目录里放入要部署的归档文件。然而,我们推荐的方法是用管理控制台或管理 CLI 来管理部署。
lib/附属于独立服务器模式的外部库。默认为空。
tmp/包含临时数据,如针对服务器检验本地用户的管理 CLI 使用的共享密钥机制相关的文件。
  1. domain里的目录
目录功能
configuration/用于受管域的配置文件。这些文件是通过管理控制台和 CLI 进行修改的,不能直接进行编辑。
data/包含 Red Hat 企业版 Linux 和微软 Windows 上 JBoss EAP 的启动脚本。
log/许可证文件、schema 和示例。
servers/配置文件、部署内容和 JBoss EAP 6 以受管域运行时使用的可写入区域。
tmp/当有服务请求时 JBoss EAP 6 动态加载的模块。
  1. bin目录下部分文件
文件名功能使用方式
standalone.bat/.shJBoss启动文件(独占模式)sh ./standalone.sh
domain.bat/.shJBoss启动文件(域模式)sh ./domain.sh
jboss-cli.bat/shJBoss管理工具sh ./jboss-cli.sh (–gui以桌面程序启动)  , connect localhost:9999(连接到Jboss)
jconsole.bat/.shJava监控和管理控制台sh ./jconsole.sh
add-user.bat/.sh新增访问web管理控制台的用户sh ./add-user.sh (分为管理型和应用型用户) ,  创建用户后即可访问localhost:9990并登录
  1. jboss配置文件
    这里主要介绍一下standalone/configuration/目录下的standalone.xml文件,后面可能会补充关于domain.xml的配置文件。
  • 扩展模块
    <extensions>
        <extension module="org.jboss.as.clustering.infinispan"/>
        <extension module="org.jboss.as.connector"/>
        <extension module="org.jboss.as.deployment-scanner"/>
        <extension module="org.jboss.as.ee"/>
        <extension module="org.jboss.as.ejb3"/>
        <extension module="org.jboss.as.jaxrs"/>
        <extension module="org.jboss.as.jdr"/>
        <extension module="org.jboss.as.jmx"/>
        <extension module="org.jboss.as.jpa"/>
        <extension module="org.jboss.as.jsf"/>
        <extension module="org.jboss.as.logging"/>
        <extension module="org.jboss.as.mail"/>
        <extension module="org.jboss.as.naming"/>
        <extension module="org.jboss.as.pojo"/>
        <extension module="org.jboss.as.remoting"/>
        <extension module="org.jboss.as.sar"/>
        <extension module="org.jboss.as.security"/>
        <extension module="org.jboss.as.threads"/>
        <extension module="org.jboss.as.transactions"/>
        <extension module="org.jboss.as.web"/>
        <extension module="org.jboss.as.webservices"/>
        <extension module="org.jboss.as.weld"/>
    </extensions>

由于jboss6以上是以模块化启动,因此配置文件中会引入依赖的模块。

  • 管理模块
 <management>
        <security-realms>
          <!--管理用户,设置管理员用户、组的保存路径及文件-->
            <security-realm name="ManagementRealm">
                <authentication>
                    <local default-user="$local" skip-group-loading="true"/>
                    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
                <authorization map-groups-to-roles="false">
                    <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
                </authorization>
            </security-realm>
        <!--应用用户,设置应用用户、角色的保存路径及文件-->
            <security-realm name="ApplicationRealm">
                <authentication>
                    <local default-user="$local" allowed-users="*" skip-group-loading="true"/>
                    <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
                <authorization>
                    <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
                </authorization>
            </security-realm>
        </security-realms>
        <audit-log>
            <formatters>
                <json-formatter name="json-formatter"/>
            </formatters>
            <handlers>
                <file-handler name="file" formatter="json-formatter" relative-to="jboss.server.data.dir" path="audit-log.log"/>
            </handlers>
            <logger log-boot="true" log-read-only="false" enabled="false">
                <handlers>
                    <handler name="file"/>
                </handlers>
            </logger>
        </audit-log>
        <management-interfaces>
            <native-interface security-realm="ManagementRealm">
                <socket-binding native="management-native"/>
            </native-interface>
            <http-interface security-realm="ManagementRealm">
                <socket-binding http="management-http"/>
            </http-interface>
        </management-interfaces>
        <access-control provider="simple">
         <!--用户角色展示-->
            <role-mapping>
                <role name="SuperUser">
                    <include>
                        <user name="$local"/>
                    </include>
                </role>
            </role-mapping>
        </access-control>
    </management>

管理模块主要是配置管理控制台的信息,主要分为管理型用户和应用型用户,上面讲的add-user工具就是添加的这两种角色。

  • profile模块
    这个模块中包含了多个子模块。
    1.profile-日志子模块
 <subsystem xmlns="urn:jboss:domain:logging:1.5">
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <named-formatter name="COLOR-PATTERN"/>
                </formatter>
            </console-handler>
<!---server日志切割滚动模式-->
            <periodic-rotating-file-handler name="FILE" autoflush="true">
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="server.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
<!--以下category日志的级别设置-->
            <logger category="org.apache.tomcat.util.modeler">
                <level name="WARN"/>
            </logger>
            <logger category="org.jboss.as.config">
                <level name="DEBUG"/>
            </logger>
            <logger category="sun.rmi">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb.config">
                <level name="ERROR"/>
            </logger>
  <!--日志输出定义,日志输出到两个handler里面:CONSOLE和FH-->
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
   <!--日志的格式-->
            <formatter name="PATTERN">
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <formatter name="COLOR-PATTERN">
                <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
        </subsystem>

2.profile-数据源datasource子模块

  <subsystem xmlns="urn:jboss:domain:datasources:1.2">
            <datasources>
!--默认数据源配置,jndi-name、pool-name、connection-url、driver、pool、security设置-->
                <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>
 <!--h2数据源配置-->
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>

3.profile-自动部署模块

        <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
            <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
        </subsystem>

jboss会监听这里配置的自动扫描地址,若有文件的变动,就会自动部署项目。上面配置的意思是,每隔5秒扫描deployments路径下的文件,若有变动,则部署项目。

4.profile-javaEE模块

        <subsystem xmlns="urn:jboss:domain:ee:1.2">
 <!--对标准的EE xml文件中的属性是否替换-->
            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
   <!--对标准的jboss xml文件中的属性是否替换-->
            <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
   <!--对java注释的属性是否替换-->
            <annotation-property-replacement>false</annotation-property-replacement>
        </subsystem>

5.profile-还有很多模块就不在这里一一解释了。

  • interface模块
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:127.0.0.1}"/>
        </interface>
        <!-- TODO - only show this if the jacorb subsystem is added  -->
        <interface name="unsecure">
            <!--
              ~  Used for IIOP sockets in the standard configuration.
              ~                  To secure JacORB you need to setup SSL 
              -->
            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
        </interface>
    </interfaces>

注意:这些ip的缺省值均为127.0.0.1,但是不能改为实际ip,否则将不能访问
解决办法新增一个ipv4的interface

然后在socket-binding中的default-interface变为any即可

  • socket-binding模块
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
 <!--对应jboss-cli连接jboss控制台的端口-->
        <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
 <!--对应jboss web端管理控制台的端口-->
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
        <socket-binding name="ajp" port="8009"/>
 <!--对应jboss 启动监听端口-->
        <socket-binding name="http" port="8080"/>
        <socket-binding name="https" port="8443"/>
        <socket-binding name="remoting" port="4447"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>

这个模块主要是配置绑定的ip和端口。
1.default-interface表示的是用哪一个ip配置
2.port-offset代表的端口偏移量,比如port-offset为5,那么下面的所有配置的端口都会在配置基础上+5(比如配置为8080,结果为8085)
3.其它socket-binding项已经在代码中注释解释了

由于篇幅问题,所以准备将后面的几部分内容放到下一篇博客中,到时候我会把链接发出来的。

作为一个萌新,非常希望大家给我一点建议或指出我的不足,我一定虚心接受,若能让其它小伙伴得到一点点帮助或启发,我会感到非常开心的(’’),我的qq1252615137,欢迎小伙伴加我交流,我们共同进步~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值