在具有有限权限的用户下启动 WildFly 8.2

Starting WildFly 8.2 under a user with limited permissions

我正在尝试在无权写入 WildFly 主目录及其子目录的用户下启动 WildFly 8.2。为此,我已将 standalone 目录复制到用户主目录。这是我用来在 cygwin 中启动 WildFly 的命令:

$ /cygdrive/c/Program\ Files/wildfly-8.2.0.Final/bin/standalone.sh -Djboss.server.base.dir='C:\Users\above_mentioned_user\standalone' -c standalone.xml

这是此命令的输出:

cygpath: can't convert empty path
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: C:\Program Files\wildfly-8.2.0.Final

  JAVA: /cygdrive/c/Program Files/Java/jdk1.7.0_51/bin/java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

java.lang.IllegalArgumentException: Failed to instantiate class "org.jboss.logmanager.handlers.PeriodicRotatingFileHandler" for handler "FILE"
        at org.jboss.logmanager.config.AbstractPropertyConfiguration$ConstructAction.validate(AbstractPropertyConfiguration.java:119)
        at org.jboss.logmanager.config.LogContextConfigurationImpl.doPrepare(LogContextConfigurationImpl.java:338)
        at org.jboss.logmanager.config.LogContextConfigurationImpl.prepare(LogContextConfigurationImpl.java:291)
        at org.jboss.logmanager.config.LogContextConfigurationImpl.commit(LogContextConfigurationImpl.java:300)
        at org.jboss.logmanager.PropertyConfigurator.configure(PropertyConfigurator.java:542)
        at org.jboss.logmanager.PropertyConfigurator.configure(PropertyConfigurator.java:97)
        at org.jboss.logmanager.LogManager.readConfiguration(LogManager.java:300)
        at org.jboss.logmanager.LogManager.readConfiguration(LogManager.java:262)
        at java.util.logging.LogManager.run(LogManager.java:312)
        at java.util.logging.LogManager.run(LogManager.java:310)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:310)
        at java.util.logging.LogManager.getLogManager(LogManager.java:292)
        at java.util.logging.Logger.<init>(Logger.java:264)
        at java.util.logging.Logger.<init>(Logger.java:260)
        at java.util.logging.LogManager$RootLogger.<init>(LogManager.java:1430)
        at java.util.logging.LogManager$RootLogger.<init>(LogManager.java:1428)
        at java.util.logging.LogManager.run(LogManager.java:196)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.util.logging.LogManager.<clinit>(LogManager.java:173)
        at org.jboss.modules.Main.main(Main.java:443)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.jboss.logmanager.config.AbstractPropertyConfiguration$ConstructAction.validate(AbstractPropertyConfiguration.java:117)
        ... 20 more
Caused by: java.io.FileNotFoundException: C:\Program Files\wildfly-8.2.0.Final\standalone\log\server.log (The system cannot find the path specified)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
        at org.jboss.logmanager.handlers.FileHandler.setFile(FileHandler.java:154)
        at org.jboss.logmanager.handlers.PeriodicRotatingFileHandler.setFile(PeriodicRotatingFileHandler.java:105)
        at org.jboss.logmanager.handlers.FileHandler.setFileName(FileHandler.java:192)
        at org.jboss.logmanager.handlers.FileHandler.<init>(FileHandler.java:122)
        at org.jboss.logmanager.handlers.PeriodicRotatingFileHandler.<init>(PeriodicRotatingFileHandler.java:73)
        ... 25 more
14:17:42,875 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) JBAS010280: Activating Infinispan subsystem.
14:17:42,884 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 40) JBAS011800: Activating Naming Subsystem
14:17:42,859 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
14:17:42,882 INFO  [org.jboss.as.jsf] (ServerService Thread Pool -- 38) JBAS012615: Activated the following JSF Implementations: [main]
14:17:42,895 INFO  [org.jboss.remoting] (MSC service thread 1-8) JBoss Remoting version 4.0.6.Final
14:17:42,906 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 45) JBAS013171: Activating Security Subsystem
14:17:42,919 WARN  [org.jboss.as.txn] (ServerService Thread Pool -- 46) JBAS010153: Node identifier property is set to the default value. Please make sure it is unique.
14:17:42,935 INFO  [org.jboss.as.connector.logging] (MSC service thread 1-1) JBAS010408: Starting JCA Subsystem (IronJacamar 1.1.9.Final)
14:17:42,938 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 31) WFLYIO001: Worker 'default' has auto-configured to 8 core threads with 64 task threads based on your 4 available processors
14:17:42,941 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension
14:17:42,953 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010417: Started Driver service with driver-name = h2
14:17:42,960 INFO  [org.jboss.as.security] (MSC service thread 1-3) JBAS013170: Current PicketBox version=4.0.21.Final
14:17:42,967 INFO  [org.jboss.as.naming] (MSC service thread 1-2) JBAS011802: Starting Naming Service
14:17:42,970 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-5) JBAS015400: Bound mail session [java:jboss/mail/Default]
14:17:43,040 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-3) JBAS017502: Undertow 1.1.0.Final starting
14:17:43,040 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 47) JBAS017502: Undertow 1.1.0.Final starting
14:17:43,489 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 47) JBAS017527: Creating file handler for path C:\Program Files\wildfly-8.2.0.Final/welcome-content
14:17:43,497 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017525: Started server default-server.
14:17:43,520 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017531: Host default-host starting
14:17:43,672 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-5) JBAS017519: Undertow HTTP listener default listening on /127.0.0.1:8080
14:17:43,719 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-3) JBAS015012: Started FileSystemDeploymentService for directory C:\Users\tazi0514\projects\nfv\r2\wildfly\deployments
14:17:43,808 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
14:17:43,994 INFO  [org.jboss.ws.common.management] (MSC service thread 1-7) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.3.2.Final
14:17:44,114 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
14:17:44,115 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
14:17:44,116 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 3294ms - Started 184 of 234 services (82 services are lazy, passive or on-demand)

正如您在上面的日志中看到的,WildFly 首先尝试写入 C:\Program Files\wildfly-8.2.0.Final\standalone\log\server.log,即使在命令行中指出了另一个目录作为服务器基目录。由于缺少权限而未能在那里写入 WildFly 继续正常启动服务器。

有没有办法让 WildFly 不尝试在默认服务器基目录中写入日志?

尝试从您复制的 standalone 目录中删除 logging.properties。这是一个定义绝对日志文件路径的生成文件,我想在你的情况下它仍然引用原始位置。

WildFly 似乎忽略了 jboss.server.base.dir 属性 的值。但它仍然考虑了 JBOSS_BASE_DIR 环境变量的值。所以我刚刚在 BASH 中创建了以下别名,以便有一个启动 WildFly 的捷径:

alias wildfly_start='JBOSS_BASE_DIR="$(realpath ~/wildfly)" /bin/bash -c "/cygdrive/c/Program\ Files/wildfly-8.2.0.Final/bin/standalone.sh -c standalone.xml"'

在我的例子中,cygwin 中的用户主目录与 Windows 用户主目录一致。

我已经在 Ubuntu 18.04 桌面上安装了 WildFly 8.2.1。我可以使用 standalone.sh 从我的终端以 root 身份启动 WildFly 没有问题,但是当我从 Intellij IDEA 中启动它时,它显示了上述错误。

为了修复它,我在 Ubuntu 中创建了一个 'wildfly' 组,并使用 chgrp 将其设置为 WildFly 安装文件夹的组。然后我为该文件夹的组分配了 rwx 权限。最后,我将我的登录用户(Intellij IDEA 在 运行 下)添加到 wildfly 组。现在在IDEA中运行,不会报权限被拒绝