You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用@Resource或DeltaSpike的@InjectableResource注入JBoss 4.2.x的login-config.xml

问题根因
  1. 注入类型不匹配:login-config.xml是JBoss自定义的安全配置XML文件,不符合标准Properties文件(包括Properties类支持的XML格式)的结构,直接声明注入为Properties类型会导致解析失败,最终注入的对象为null,调用方法时抛出NPE。
  2. @InjectableResource默认优先加载应用classpath下的资源,若JBoss的server/default/conf目录未被纳入应用的classpath搜索范围,会直接找不到资源。
  3. @Resource注解是用于注入JNDI中绑定的资源(如数据源、EJB实例等),login-config.xml默认不会被绑定到JNDI树,因此lookup阶段直接报错。
正确实现方案

方案1:通过DeltaSpike资源注入直接读取(推荐)

先确认JBoss的server/default/conf目录已被纳入全局classpath(JBoss 4.2.x版本默认已配置),修改注入类型为InputStream,拿到流后自行解析XML即可:

@InjectableResource(location = "login-config.xml")
private InputStream loginConfigStream;

你可以使用DOM、SAX或者JAXB等方式解析该输入流,获取需要的配置项。

方案2:通过系统属性拼接路径加载

如果classpath优先级问题导致方案1失效,可以用DeltaSpike的ConfigResolver读取JBoss内置的系统属性,拼接出配置文件的绝对路径后加载:

// 读取JBoss服务根目录路径
String jbossServerHome = ConfigResolver.getPropertyValue("jboss.server.home.dir");
File loginConfigFile = new File(jbossServerHome, "conf/login-config.xml");
// 后续自行读取该文件对象即可

内容的提问来源于stack exchange,提问作者XoXo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:15:03