简介

在上一篇文章我们介绍了wildfly 21的基本使用和管理界面。今天我们将会详细讲解一下wildfly的配置文件和资源管理。

wildfly的配置文件

不管是在standalone还是在domain模式下,有两个配置文件是非常重要的,他们是standalone.xml和domain.xml。

其他的standalone-*.xml可以参考standalone.xml来配置

我们看下standalone.xml的大体结构:

<server xmlns="urn:jboss:domain:14.0">
<extensions>
...
</extensions>
<management>
...
</management>
<profile>
...
</profile>
<interfaces>
...
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
...
</socket-binding-group>
</server>

server主要有5部分,分别是extensions,management,profile,interfaces和socket-binding-group。

extensions

extensions表示的是核心应用程序之外的module。因为有了这些外部的module,所以wildfly核心应用程序是非常简单和轻量级的。

这些外部的module是放在modules文件夹的。我们可以通过使用extension标签来引用他们:

<extensions>
[...]
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.webservices" />
<extension module="org.jboss.as.weld" />
[...]
<extension module="org.wildfly.extension.undertow"/>
</extensions>

profile

profile是由多个subsystem组成的。subsystem是通过extension添加到核心服务器的一组新增的功能。

我们看一个profile和subsystem的例子:

<profile>
<subsystem xmlns="urn:jboss:domain:logging:8.0">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<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>
<logger category="io.jaegertracing.Configuration">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd 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>
</profile>

上面的代码配置了一个jboss:domain:logging,设置了日志的格式,日志级别等信息。

基本上domain.xml和standalone.xml中的profile的内容是一样的,不同的是domain.xml中可以配置多个profile,而standalone.xml只能有一个profile。

path

在上面的日志配置中,我们在periodic-rotating-file-handler 中使用了 file的path属性。需要在path属性中指定日志文件的位置。

<file relative-to="jboss.server.log.dir" path="server.log"/>

这里我们使用的是server.log,实际上wildfly中有很多内置的path变量:

  • jboss.home.dir - WildFly的root目录

  • user.home - 用户的home目录

  • user.dir - 用户的当前工作目录

  • java.home - java安装目录

  • jboss.server.base.dir - server实例的root目录

  • jboss.server.config.dir - server实例的配置文件目录

  • jboss.server.data.dir - server实例的数据目录

  • jboss.server.log.dir - server实例的日志目录

  • jboss.server.temp.dir - server实例的temp目录

  • jboss.controller.temp.dir - controller实例的temp目录

  • jboss.domain.servers.dir - 在managed domain模式下,host controller为servers创建的工作目录

除了最上面的5个路径之外,用户可以自定义或者重写其他的内置路径:

<path name="example" path="example" relative-to="jboss.server.data.dir"/>

其中name表示的是path的名字,path是路径的值,如果没有relative-to就是绝对路径,带上relative-to就是相对路径。

relative-to表示的是相对路径的基准。

上面的格式只能在standalone.xml文件中使用。如果要在domain.xml中使用则必须下面的格式:

<path name="x"/>

这里的name只是对host.xml文件中的path定义的一个引用:

<path name="x" path="/var/x" />

interface

iterface表示的是网络接口,可以是hostname也可以是IP地址,是给后面的sockets绑定使用的。

我们看一个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>
</interfaces>

同样的,如果是在domain.xml中的interface标签只能包含name属性:

<interface name="internal"/>

这个引用是定义在host.xml中的。

socket-binding

socket-binding定义的是网络的出口,通过指定绑定的ip和接口,最终可通过该地址来访问相应的服务:

    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<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:9993}"/>
<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="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:25}"/>
</outbound-socket-binding>
</socket-binding-group>

上面的例子中,我们定义了ajp,http,https的地址,并且还有几个管理端,事务,邮件的地址。

注意,我们有一个属性叫做port-offset,这个可以设置标准接口的偏移量,特别方便在标准接口被占用的情况下使用。

比如,我们默认的http端口是8080,如果这个端口已经被占用了,那么我们可以传入一个port-offset= 100,这样http端口就变成了8180,非常方便。

management

management是对wildfly管理端的配置,我们知道可以通过wildfly的web端或者cli端进行wildfly的管理。

我们看下management的定义:

    <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-realms>
<audit-log>
<formatters>
<json-formatter name="json-formatter"/>
</formatters>
<handlers>
<file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>
</handlers>
<logger log-boot="true" log-read-only="false" enabled="false">
<handlers>
<handler name="file"/>
</handlers>
</logger>
</audit-log>
<management-interfaces>
<http-interface security-realm="ManagementRealm">
<http-upgrade enabled="true"/>
<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>

上面的例子中,我们通过management-interfaces指定了管理端的访问地址,和要使用到的安全策略。

在security-realms中,我们可以定义多种security-realm。在security-realm中可以定义用户信息和group信息。

资源管理

wildfly提供了两种资源管理的方式,一种就是通过web端http://host:9990/console ,一种就是通过命令行:

./bin/jboss-cli.sh
You are disconnected at the moment. Type 'connect' to connect to the server
or 'help' for the list of supported commands.
[disconnected /] [disconnected /] connect
[standalone@localhost:9990 /]

web端大家应该都很清楚怎么使用,这里重点介绍一下命令行端的使用情况。

我们通过help --commands可以拿到命令行状态下可以执行的命令:

attachment                              deployment enable-all                   module                                  security enable-http-auth-http-server
batch deployment info patch apply security enable-http-auth-management
cd deployment list patch history security enable-sasl-management
clear deployment undeploy patch info security enable-ssl-http-server
command deployment undeploy-cli-archive patch inspect security enable-ssl-management
command-timeout deployment-info pwd security reorder-sasl-management
connect deployment-overlay quit set
connection-info echo read-attribute shutdown
data-source echo-dmr read-operation try
deploy for reload undeploy
deployment deploy-cli-archive grep run-batch unset
deployment deploy-file help security disable-http-auth-http-server version
deployment deploy-url history security disable-http-auth-management xa-data-source
deployment disable if security disable-sasl-management
deployment disable-all jdbc-driver-info security disable-ssl-http-server
deployment enable ls security disable-ssl-management

除此之外,命令行还对资源提供了一系列的操作符来对资源进行操作。

在wildfly中,可管理的对象都被看做是一个一个的资源,我们可以通过资源的路径来访问到这个资源。

比如,我想看一下server下面名字是default-server的资源,则可以这样:

 /server=default-server

资源路径可以连写,比如:

/subsystem=undertow/server=default-server/http-listener=default

这些都是有效的资源路径。

有了资源路径,我们还需要提供操作符来对资源进行操作,wildfly提供了下面的操作符:

add

read-attribute

read-children-names

read-children-resources

read-children-types

read-operation-description

read-operation-names

read-resource

read-resource-description

remove

validate-address

write-attribute

我们可以在操作符前面加上冒号,来具体使用他们:

/subsystem=logging:read-operation-names

上面的例子将会获取对logging子系统的操作符:

{
"outcome" => "success",
"result" => [
"add",
"list-add",
"list-clear",
"list-get",
"list-log-files",
"list-remove",
"map-clear",
"map-get",
"map-put",
"map-remove",
"query",
"read-attribute",
"read-attribute-group",
"read-attribute-group-names",
"read-children-names",
"read-children-resources",
"read-children-types",
"read-log-file",
"read-operation-description",
"read-operation-names",
"read-resource",
"read-resource-description",
"remove",
"undefine-attribute",
"whoami",
"write-attribute"
]
}

总结

本文讲解了wildfly的配置文件和资源管理相关的操作,希望大家能够喜欢。

本文作者:flydean程序那些事

本文链接:http://www.flydean.com/wildfly-config-resource/

本文来源:flydean的博客

欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

wildfly 21的配置文件和资源管理的更多相关文章

  1. wildfly 21中应用程序的部署

    目录 简介 Managed Domain中的部署 管理展开的部署文件 standalone模式下的部署 standalone模式下的自动部署 Marker Files 受管理的和不受管理的部署 部署覆 ...

  2. wildfly 21的domain配置

    目录 简介 wildfly模式简介 domain controller的配置 Host controller的配置文件 忽略域范围的资源 Server groups Servers 总结 简介 wil ...

  3. 在wildfly 21中搭建cluster集群

    目录 简介 下载软件和相关组件 配置domain 创建应用程序 部署应用程序 集群配置 总结 简介 wildfly是一个非常强大的工具,我们可以轻松的使用wildfly部署应用程序,更为强大的是,wi ...

  4. JBoss/Wildfly 配置SQLserver服务器

    JBoss/Wildfly 配置SQLserver服务器 http://blog.csdn.net/haitaolang/article/details/60467118 wildfly standa ...

  5. 用C语言实现解析简单配置文件的小工具

    本文介绍作者写的一个小工具,简单的代码中包含了C语言对字符串的处理技巧,对文本文件的简单解析,二进制文件的数据复制的方法,以及格式化输出文本文件的示例. 工具的输入是如下内容的配置文件: ;资源管理器 ...

  6. Egret引擎随学随机

    1.纹理集实际上就是将一些零碎的小图放到一张大图当中.游戏中也经常使用到纹理集.使用纹理集的好处很多,我们通过将大量的图片拼合为一张图片从而减少网络请求,原先加载数次的图片资源现在加载一次即可.同时, ...

  7. 6.python模块(导入,内置,自定义,开源)

    一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...

  8. H3C路由交换常用命令

    1.查看Linux下查看端口状态 root@root:~# netstat -an|grep -E "6002|6003" 2.H3C交换机显示当前配置 [H3C]display ...

  9. Centos7 编译安装Nginx 教程

    相信经过上篇博文的学习,聪明的你已经学会了如何在Centos7 上通过yum 方式安装Nginx ,但是有时候有些场景或者特俗情况下,我们往往需要通过编译源码方式安装,以便于更灵活地定制我们的Ngin ...

随机推荐

  1. 单调栈高封装模板hia hia hia

    这个单调栈应该可以了,舒服舒服 #include <bits/stdc++.h> using namespace std; #define limit (400000 + 5)//防止溢出 ...

  2. 用Python爬取了三大相亲软件评论区,结果...

    小三:怎么了小二?一副愁眉苦脸的样子. 小二:唉!这不是快过年了吗,家里又催相亲了 ... 小三:现在不是流行网恋吗,你可以试试相亲软件呀. 小二:这玩意靠谱吗? 小三:我也没用过,你自己看看软件评论 ...

  3. PostMan设置环境变量&全局变量

    一.设置环境变量 1.点击右上角Manage Environment,进入环境变量设置界面 2.定义环境名称,参数名及参数值 3.将接口地址中服务器地址进行参数化,并选择对应的环境执行 二.设置全局变 ...

  4. sql bool盲注

    [CISCN2019 总决赛 Day2 Web1]Easyweb 考察: robots.txt image.php?bak文件泄露,image.php.bak可以下载别的不大行 盲注 php日志挂马 ...

  5. Linux内核源码分析之setup_arch (二)

    1. 概述 接着上一篇<Linux内核源码分析之setup_arch (一)>继续分析,本文首先分析arm_memblock_init函数,然后分析内核启动阶段的是如何进行内存管理的. 2 ...

  6. 查看java程序中对象占用空间大小

    需要引入的jar包: <dependency> <groupId>com.carrotsearch</groupId> <artifactId>java ...

  7. jvm基本结构和解析

    jvm的基本结构图如下 这只是代表我的个人理解  不是很深刻  欢迎各类大神进行补充和纠正 jvm之所以强大就是因为他从软件层面屏蔽不用操作系统在底层硬件与指令上的区别,从而可以在不同系统上兼容 主要 ...

  8. html 03-初识HTML

    03-初识HTML #本文主要内容 头标签 排版标签:<p>. <div>. <span>.<br> . <hr> . <center ...

  9. Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响

    前几天在<Spring Boot 2.4 对多环境配置的支持更改>一文中,给大家讲解了Spring Boot 2.4版本对多环境配置的配置变化.除此之外,还有一些其他配置变化,所以今天我们 ...

  10. Protobuf简单类型直接反序列化方法

    我有一个想法,有一个能够进行跨平台的高性能数据协议规范,能够让数据在两个不同的程序之间进行读取,最好能够支持直接将object序列化,那就完美了. 目标 支持任意Object序列化 支持从类似Syst ...