WebSphere <env-entry> in application.xml 和@Resource 注入
WebSphere <env-entry> in application.xml and @Resource injection
我无法在我的 WebSphere 8.5.5 应用程序中使用 @Resource
注释从 application.xml 注入环境条目。 (我不想将条目向下移动到组件级别 ejb-jar.xml。)我错过了什么?
application.xml:
<application
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
<env-entry>
<env-entry-name>fileName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>theValue</env-entry-value>
</env-entry>
有了这个,我做看到 "fileName" 在 WebSphere 管理控制台部分 定义为 "theValue" 应用程序的环境条目。但是我不知道如何从我的 EJB 访问它。
StartupBean.java:
@Singleton
@Startup
public class StartupBean {
@Resource(name = "fileName")
private String fileName = "default";
fileName
总是 "default",而不是 "theValue"。
我尝试使用 "java:comp" 和 "java:app" 进行手动查找(根据 的建议),但两者都抛出 NamingException
Context ctx = new InitialContext();
fileName = (String) ctx.lookup("java:comp/env/fileName");
fileName = (String) ctx.lookup("java:app/env/fileName");
在 application.xml
中声明的资源必须使用 java:app/env
或 java:global/env
前缀,因此它应该类似于:
<env-entry>
<env-entry-name>java:app/env/fileName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>theValue</env-entry-value>
</env-entry>
然后,注入字段如下:
@Resource(name = "java:app/env/fileName")
private String fileName = "default";
我无法在我的 WebSphere 8.5.5 应用程序中使用 @Resource
注释从 application.xml 注入环境条目。 (我不想将条目向下移动到组件级别 ejb-jar.xml。)我错过了什么?
application.xml:
<application
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
<env-entry>
<env-entry-name>fileName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>theValue</env-entry-value>
</env-entry>
有了这个,我做看到 "fileName" 在 WebSphere 管理控制台部分 定义为 "theValue" 应用程序的环境条目。但是我不知道如何从我的 EJB 访问它。
StartupBean.java:
@Singleton
@Startup
public class StartupBean {
@Resource(name = "fileName")
private String fileName = "default";
fileName
总是 "default",而不是 "theValue"。
我尝试使用 "java:comp" 和 "java:app" 进行手动查找(根据 NamingException
Context ctx = new InitialContext();
fileName = (String) ctx.lookup("java:comp/env/fileName");
fileName = (String) ctx.lookup("java:app/env/fileName");
在 application.xml
中声明的资源必须使用 java:app/env
或 java:global/env
前缀,因此它应该类似于:
<env-entry>
<env-entry-name>java:app/env/fileName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>theValue</env-entry-value>
</env-entry>
然后,注入字段如下:
@Resource(name = "java:app/env/fileName")
private String fileName = "default";