简介
在上一篇文章咱们介绍了 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 的博客
欢送关注我的公众号:「程序那些事」最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!