在JEE6中使用@Resource和JNDI注入文件

时间:2013-08-28 20:20:58

标签: glassfish java-ee-6 jndi

是否可以在JEE6中使用JNDI和@Resource注入文件?

如果是这样,我如何在Glassfish中设置和JNDI(文件)资源?

1 个答案:

答案 0 :(得分:0)

如果您的目标是按如下方式配置属性文件:

@Inject
@Resource("META-INF/aws.properties")
Properties awsProperties;

然后你想使用WELD文档中解释的WELD扩展here

就像将它添加到您的POM一样简单

<dependency>
   <groupId>org.jboss.weld</groupId>
      <artifactId>weld-extensions</artifactId>
      <version>${weld.extensions.version}</version>
      <type>pom</type>
      <scope>import</scope>
</dependency>

否则

有关程序化方法,请参阅此article

或者,

将您的属性存储在数据库模式表中,并使用JPA 2.0使用指向JNDI的JTA检索它们。

或者如果您的应用程序是JSF:

  1. 在faces-config.xml文件中添加资源包,如下所示:

     <application>
        <resource-bundle>
            <base-name>/YourProperties</base-name>
            <var>yourProperties</var>
        </resource-bundle>
    </application>
    
  2. 在classpath或maven resources文件夹中添加相应的YourProperties.properties文件,如下所示:
    Maven resource folder

  3. 在容器托管bean中添加以下代码段:

    private String someString;
    
    @PostConstruct
    public void loadProperty(){
        someString = ResourceBundle.getBundle("/YourProperties").getString("prop1");
     }