Search code examples
jbosscygwinwildflywildfly-8

Starting WildFly 8.2 under a user with limited permissions


I'm trying to start WildFly 8.2 under a user that doesn't have permissions to write in a WildFly home directory and it's subdirectories. For this purpose I've copied standalone directory to a user home directory. Here is a command I use to start WildFly in cygwin:

$ /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

And here is an output of this command:

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$2.run(LogManager.java:312)
        at java.util.logging.LogManager$2.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$1.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)

As you can see in the log above first WildFly tries writing to C:\Program Files\wildfly-8.2.0.Final\standalone\log\server.log even though there is another directory pointed out in the command line as a server base directory. Having failed to write there because of lack of permissions WildFly goes on starting a server normally.

Is there a way to make WildFly not to try writing a log in a default server base directory?


Solution

  • It seems like WildFly ignores a value of jboss.server.base.dir property. But it still takes into account a value of JBOSS_BASE_DIR environment variable. So I've just made the following alias in BASH to have a short way to start 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"'
    

    In my case a user home directory in cygwin coincides with a Windows user home directory.