简介

在上一篇文章咱们介绍了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.shYou are disconnected at the moment. Type 'connect' to connect to the serveror '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-serverbatch                                   deployment info                         patch apply                             security enable-http-auth-managementcd                                      deployment list                         patch history                           security enable-sasl-managementclear                                   deployment undeploy                     patch info                              security enable-ssl-http-servercommand                                 deployment undeploy-cli-archive         patch inspect                           security enable-ssl-managementcommand-timeout                         deployment-info                         pwd                                     security reorder-sasl-managementconnect                                 deployment-overlay                      quit                                    setconnection-info                         echo                                    read-attribute                          shutdowndata-source                             echo-dmr                                read-operation                          trydeploy                                  for                                     reload                                  undeploydeployment deploy-cli-archive           grep                                    run-batch                               unsetdeployment deploy-file                  help                                    security disable-http-auth-http-server  versiondeployment deploy-url                   history                                 security disable-http-auth-management   xa-data-sourcedeployment disable                      if                                      security disable-sasl-managementdeployment disable-all                  jdbc-driver-info                        security disable-ssl-http-serverdeployment enable                       ls                                      security disable-ssl-management

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

在wildfly中,可治理的对象都被看做是一个一个的资源,咱们能够通过资源的门路来拜访到这个资源。

比方,我想看一下server上面名字是default-server的资源,则能够这样:

 /server=default-server 

资源门路能够连写,比方:

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

这些都是无效的资源门路。

有了资源门路,咱们还须要提供操作符来对资源进行操作,wildfly提供了上面的操作符:

addread-attributeread-children-namesread-children-resourcesread-children-typesread-operation-descriptionread-operation-namesread-resourceread-resource-descriptionremovevalidate-addresswrite-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的博客

欢送关注我的公众号:「程序那些事」最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!