JSF 2.3应用:Backing Bean获取命令行参数及GlassFish传参方法
关于JSF 2.3 + GlassFish下命令行参数的问题解答
1. Backing Bean能否访问命令行参数?
可以,但无法直接通过普通Java应用的main方法args参数获取。Java EE应用运行在服务器容器中,main方法由服务器启动时调用,应用本身不能直接拿到服务器启动时的命令行参数。不过可以通过两种间接方式获取:
方式一:通过JVM系统属性读取
如果将命令行参数转为JVM系统属性,Backing Bean可以用System.getProperty()方法读取。示例代码如下:
@Named(value = "myBean") @ApplicationScope public class MyBean { private String appParam; @PostConstruct public void init() { // 读取预先设置的系统属性 appParam = System.getProperty("myapp.custom.param"); } }
方式二:依赖GlassFish特定实现(不推荐)
可以通过GlassFish的管理API或读取服务器配置文件获取启动参数,但这种方式绑定GlassFish内部实现,通用性差,优先推荐系统属性方案。
2. 如何通过GlassFish传递命令行参数给应用?
方法一:启动域时直接添加参数
在使用asadmin命令启动GlassFish域时,直接追加JVM系统属性参数:
# Linux/macOS环境示例 ./asadmin start-domain -Dmyapp.custom.param=demoValue domain1
:: Windows环境示例 asadmin.bat start-domain -Dmyapp.custom.param=demoValue domain1
方法二:通过管理控制台配置
- 打开GlassFish管理控制台(默认地址:
http://localhost:4848) - 依次进入服务器 -> 配置 -> server-config -> JVM设置 -> JVM选项
- 点击「添加JVM选项」,输入
-Dmyapp.custom.param=yourValue,保存后重启服务器
方法三:修改域配置文件
编辑GlassFish域目录下的config/domain.xml,找到<java-config>节点,添加<jvm-options>标签:
<java-config ...> <!-- 已有JVM选项 --> <jvm-options>-Dmyapp.custom.param=yourValue</jvm-options> </java-config>
保存文件后重启GlassFish域即可生效。
内容的提问来源于stack exchange,提问作者bill tsi
相关产品推荐
相关产品推荐

