Java @资源不注入环境条目
我最近看到了一篇用JavaEE解释的帖子,与其使用Java @资源不注入环境条目,java,xml,environment-variables,java-ee-6,code-injection,Java,Xml,Environment Variables,Java Ee 6,Code Injection,我最近看到了一篇用JavaEE解释的帖子,与其使用.properites文件,不如在web.xml文件中指定配置属性,然后将它们注入到需要属性的类中 这是我的Web.xml <env-entry> <env-entry-name>pacakageName.ClassName/number</env-entry-name> <env-entry-type>java.lang.Integer</env-entry-type>
.properites
文件,不如在web.xml
文件中指定配置属性,然后将它们注入到需要属性的类中
这是我的Web.xml
<env-entry>
<env-entry-name>pacakageName.ClassName/number</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>123</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>country</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Spain</env-entry-value>
</env-entry>
@Path("loginService")
public class LoginService{
@Resource() int number;
//constructor and other methods
}
这是可行的,但是当我尝试使用@Resources
的新方法并注入值时,值不是从web.xml
<env-entry>
<env-entry-name>pacakageName.ClassName/number</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>123</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>country</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Spain</env-entry-value>
</env-entry>
@Path("loginService")
public class LoginService{
@Resource() int number;
//constructor and other methods
}
我正在使用Tomcat 7…谁能帮我找出我做错了什么
我参考了这份文件:
您的类不是支持
@Resource
注释的类。它需要是一个JavaEE组件,比如EJB
这是因为容器是注入资源的容器,它只将组件视为有效的注入目标。同样出于这个原因,必须在容器启动之前定义资源,因此您不能在运行时将资源注入JNDI。您的类不是支持
@resource
注释的类。它需要是一个JavaEE组件,比如EJB
这是因为容器是注入资源的容器,它只将组件视为有效的注入目标。同样出于这个原因,必须在容器启动之前定义资源,因此不能在运行时将资源注入JNDI。确保WEB-INF文件夹中有
beans.xml
文件(这将启用CDI),然后将变量更改为java.lang.Integer
,如下所示:
@Resource(name="pacakageName.ClassName/number")
Integer number;
@Resource(name="country")
String country;
它在支持CDI的Java EE 6容器中运行良好,例如,请确保WEB-INF文件夹中有
beans.xml
文件(这将启用CDI),然后将变量更改为Java.lang.Integer
,如下所示:
@Resource(name="pacakageName.ClassName/number")
Integer number;
@Resource(name="country")
String country;
它在支持CDI的JavaEE6容器中运行良好,例如显示您在中使用的
@Resource
类的代码。您的“packagename.ClassName”是如何注释的?可能是以错误的方式实例化了它。@italo我没有对类进行注释,是吗?@Kayaman我在使用资源的地方发布了类……我将它注入到字段中,并在方法中的某个地方使用它显示您在中使用@Resource
的类的代码。您的“packagename.ClassName”是如何注释的?可能是以错误的方式实例化了它。@italo我还没有注释该类,是吗?@Kayaman我将该类发布到我使用资源的位置……我将其注入字段中,并在method@Kayaman..Thanks答案是,我们不能在servlet中执行吗?它由tomcat@user3897395好,您的类似乎不是一个servlet。它没有扩展HttpServlet。我知道,我只是问了个问题,我会在servlet上试用。@user3897395它在servlet上有效吗?从逻辑上讲,它应该是。@Kayaman.谢谢你的回答,但是我们不能在servlet中完成吗?它由tomcat@user3897395嗯,您的类似乎不是一个servlet。它没有扩展HttpServlet。我知道,我只是问了个问题,我会在servlet上试用。@user3897395它在servlet上有效吗?从逻辑上讲,它应该这样做。