Java JBoss启动选项问题

Java JBoss启动选项问题,java,jboss,jboss7.x,Java,Jboss,Jboss7.x,我通过standalone.bat启动JBossAS7,它通过standalone.conf.bat提供JAVA_选项启动选项。我在standalone.conf.bat中设置了大多数JAVA_选项,我对一些JAVA_选项有一些疑问 -mp "/opt/jboss-as-7.0.0.Final/modules" -logmodule org.jboss.logmanager -jaxpmodule javax.xml.jaxp-provider 我试着把这些设置成 set "JAVA_OP

我通过standalone.bat启动JBossAS7,它通过standalone.conf.bat提供JAVA_选项启动选项。我在standalone.conf.bat中设置了大多数JAVA_选项,我对一些JAVA_选项有一些疑问

-mp "/opt/jboss-as-7.0.0.Final/modules" 
-logmodule org.jboss.logmanager 
-jaxpmodule javax.xml.jaxp-provider
我试着把这些设置成

set "JAVA_OPTS=%JAVA_OPTS% -mp /opt/jboss-as-7.0.0.Final/modules"
set "JAVA_OPTS=%JAVA_OPTS% -logmodule org.jboss.logmanager"
set "JAVA_OPTS=%JAVA_OPTS% -jaxpmodule javax.xml.jaxp-provider"
在standalone.conf.bat中。这似乎不起作用,当我通过standalone.bat启动JBoss时,会出现诸如“unrecognized option-mp”或“unrecognized option-logmodule”之类的错误。如果我从standalone.conf.bat中删除这些行,我的JBoss就能够成功启动

我的问题是-我甚至需要设置这些JBoss启动选项吗?我找不到太多关于它们是什么的文档,尤其是“-mp”。如果是这样,设置这些启动选项的最佳方式是什么?JBoss不喜欢上面的语法。非常感谢您的建议。

-mp、-logmodule和-jaxpmodule选项属于JBoss,而不是Java解释器。您的启动失败,因为您将它们包括在Java选项列表中,而解释器阻塞(它无法识别这些选项)

如果您没有试图绕过
standalone.bat
,那么我认为没有理由将这些选项移动到
standalone.conf.bat
文件中

编辑

JBoss 7.0.1的默认standalone.bat包含以下条目:

:RESTART
"%JAVA%" %JAVA_OPTS% ^
 "-Dorg.jboss.boot.log.file=%JBOSS_HOME%\standalone\log\boot.log" ^
 "-Dlogging.configuration=file:%JBOSS_HOME%/standalone/configuration/logging.properties" ^
    -jar "%JBOSS_HOME%\jboss-modules.jar" ^
    -mp "%MODULEPATH%" ^
    -logmodule "org.jboss.logmanager" ^
    -jaxpmodule "javax.xml.jaxp-provider" ^
     org.jboss.as.standalone ^
    -Djboss.home.dir="%JBOSS_HOME%" ^
     %*

如果要修改-mp、-logmodule或-jaxpmodule值,只需在standalone.bat文件中就地修改即可。另一方面,看起来您正在使用默认值,因此甚至不需要进行任何更改。

为什么
java
退出时出现“无法识别的选项”错误

将选项传递给
java
的顺序是相关的

正如他在回答中所理解的那样,
-mp
-logmodule
-jaxpmodule
都是JBoss选项。说明必须在
(要调用的类的名称)之后或在
-jar file.jar
选项之后指定这些和其他非JVM选项:

java [JVM options] class [non-JVM options]
java [JVM options] -jar file.jar [non-JVM options]
(然后将非JVM选项传递给
类的主函数
,或者在使用
-jar file.jar
时,传递给jar文件中由指示的启动类中的主函数。)

这就是为什么在JAVA_OPTS中设置JBoss选项不起作用的原因:它们位于
-jar%JBoss_HOME%\JBoss modules.jar
选项之前,正如您在
standalone.bat
中看到的那样:

"%JAVA%" %JAVA_OPTS% ^
 "-Dorg.jboss.boot.log.file=%JBOSS_HOME%\standalone\log\boot.log" ^
 "-Dlogging.configuration=file:%JBOSS_HOME%/standalone/configuration/logging.properties" ^
-jar "%JBOSS_HOME%\jboss-modules.jar" ^
-mp "%MODULEPATH%" ^
-logmodule "org.jboss.logmanager" ^
-jaxpmodule "javax.xml.jaxp-provider" ^
 org.jboss.as.standalone ^
-Djboss.home.dir="%JBOSS_HOME%" ^
 %*
java
抱怨,因为它需要一个合法的JVM选项

回答您的问题

我甚至需要设置这些JBoss启动选项吗

这些都是默认值,所以不需要

设置这些启动选项的最佳方式是什么

您可以将JBoss选项添加到SERVER_OPTS变量,因为它被附加到命令的末尾

好奇者:其他JBoss选项

您可以使用
java-jar%JBoss\u HOME%\JBoss modules.jar列出其他JBoss选项:

Usage: java [-jvmoptions...] -jar jboss-modules.jar [-options...] <module-spec> [args...]
   java [-jvmoptions...] -jar jboss-modules.jar [-options...] -jar <jar-name> [args...]
   java [-jvmoptions...] -jar jboss-modules.jar [-options...] -cp <class-path> <class-name> [args...]
   java [-jvmoptions...] -jar jboss-modules.jar [-options...] -class <class-name> [args...]
   java [-jvmoptions...] -jar jboss-modules.jar -addindex [-modify] <jar-name>

where <module-spec> is a valid module specification string
and options include:

    -help         Display this message
    -modulepath <search path of directories>
    -mp <search path of directories>
                  A list of directories, separated by ':', where modules may be located
                  If not specified, the value of the "module.path" system property is used
    -class        Specify that the final argument is a
                  class to load from the class path; not compatible with -jar
    -cp,-classpath <search path of archives or directories>
                  A search path for class files; implies -class
    -dep,-dependencies <module-spec>[,<module-spec>,...]
                  A list of module dependencies to add to the class path;
                  requires -class or -cp
    -deptree      Print the dependency tree of the given module instead of running it
    -jar          Specify that the final argument is the name of a
                  JAR file to run as a module; not compatible with -class
    -jaxpmodule <module-spec>
                  The default JAXP implementation to use of the JDK
    -secmgr       Run with a security manager installed; not compatible with -secmgrmodule
    -secmgrmodule <module-spec>
                  Run with a security manager module; not compatible with -secmgr
    -addindex     Specify that the final argument is a
                  jar to create an index for
    -modify       Modify the indexes jar in-place
    -version      Print version and exit
用法:java[-jvmoptions…]-jar jboss-modules.jar[-options…][args…] java[-jvmoptions…]-jar jboss-modules.jar[-options…]-jar[args…] java[-jvmoptions…]-jar jboss-modules.jar[-options…]-cp[args…] java[-jvmoptions…]-jar jboss-modules.jar[-options…]-class[args…] java[-jvmoptions…]-jar jboss-modules.jar-addindex[-modify] 其中是有效的模块规范字符串 可供选择的方案包括: -帮助显示此消息 -模块路径 -议员 模块所在的目录列表,以“:”分隔 如果未指定,则使用“module.path”系统属性的值 -类指定最后一个参数是 要从类路径加载的类;与-jar不兼容 -类路径 类文件的搜索路径;隐含类 -dep,-依赖项[,,…] 要添加到类路径的模块依赖项列表; 需要-class或-cp -deptree打印给定模块的依赖关系树,而不是运行它 -jar指定最后一个参数是 作为模块运行的JAR文件;与-class不兼容 -jaxpmodule 使用JDK的默认JAXP实现 -在安装安全管理器的情况下运行secmgr;与-secmgr模块不兼容 -副经理模块 使用安全管理器模块运行;与-secmgr不兼容 -addindex指定最终参数为 jar为其创建索引 -在适当的位置修改索引 -版本打印版本并退出
我还尝试将它们添加到standalone.bat,这产生了相同的结果。这是正确的语法,还是应该使用JBOSS_OPTS=?伟大的谢谢你的帮助!没问题。如果我的答案有助于你解决问题,请随意标记为正确答案。祝项目顺利。@Perception-我个人认为,“-D”arg是一个程序arg,“-mp”和“-jaxpmodule”arg是JVM arg(显然),但不知怎么回事,它是如何工作的。我已经盯着这个看了一个小时,弄不懂它的意思。“如何”在不使用“-D”的情况下将属性传递给JVM(并工作!)?