Java 无法读取WildFly系统属性

Java 无法读取WildFly系统属性,java,jboss,wildfly,wildfly-9,Java,Jboss,Wildfly,Wildfly 9,我将一个应用程序打包在EAR文件中,并部署在WildFly 9.0.2 Final上。它需要读取WildFly定义的一些系统属性 问题是EAR中的类无法读取WildFly系统属性。例如-以下代码获取NullPointerException: String DEPLOY_DIR = System.getProperty("jboss.server.base.dir") + File.separator + "deployments" File deployDir = new File(DEPLO

我将一个应用程序打包在EAR文件中,并部署在WildFly 9.0.2 Final上。它需要读取WildFly定义的一些系统属性

问题是EAR中的类无法读取WildFly系统属性。例如-以下代码获取NullPointerException:

String DEPLOY_DIR  = System.getProperty("jboss.server.base.dir") + File.separator + "deployments"
File deployDir = new File(DEPLOY_DIR);
这就是错误:

java.lang.NullPointerException
            at java.io.File.<init>(File.java:277)
请注意,当WildFly启动时,其相关系统属性将正确显示在其日志中:

jboss.server.base.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone
jboss.server.config.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\configuration
jboss.server.data.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\data
jboss.server.deploy.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\data\content
jboss.server.log.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\log

我的问题-EAR无法读取任何系统属性有什么原因吗?

我首先要说的是,在大型系统中,很难诊断这些问题

在JVM中,系统属性是共享的,您应该始终看到相同的值,正如Wildfly9文档所确认的那样,同时警告您

系统属性等在 应用程序服务器本身,而不是包含该文件的部署

因此答案应该是否定的:EAR可以读取所有系统属性,因为您没有收到SecurityException(这排除了您在安全上下文中运行并且它正在阻止您的事实)

无论如何,可能有一些情况你应该检查一下,比如:

  • 您的一段代码在另一段代码之后运行,该代码删除了该值。您可以使用环境变量$JBOSS_HOME解决这些问题
  • 您的DEPLOY_DIR是一个静态常量(在本例中,可以在Wildfly设置jboss.server.base.DIR之前对其进行计算)。您可以使用由standalone.sh直接创建的“jboss.home.dir”键来解决这个问题
  • 您的代码正在静态{…}初始化块中运行。如果是这种情况,在其中使用“新文件”是一种不好的做法,但如果不是这样,您可以将其作为案例2解决

  • 读取系统道具的代码在哪里。什么时候执行?它可能是静态初始值设定项的一部分吗?您确定正在执行此代码吗?如果属性为
    null
    DEPLOY\u DIR
    应该类似于
    null\deployments
    jboss.server.base.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone
    jboss.server.config.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\configuration
    jboss.server.data.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\data
    jboss.server.deploy.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\data\content
    jboss.server.log.dir = C:\javaSoft\workspaces\WildFly_Migration\App\configuration\wildfly-9.0.2.Final\standalone\log