我有一个非常简单的CDI bean:
package net.resourceAuth;
public class Sample {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
现在我想使用beans.xml
初始化text
变量。我尝试使用beans.xml
文件,如下所示:
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:res="urn:java:net.resourceAuth"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<res:Sample>
<res:text>test123</res:text>
</res:Sample>
</beans>
但是它不起作用。text
总是空的。你能帮我找出这里出了什么问题吗?
换句话说:我正在寻找一个类似的解决方案,因为它在JSF faces-config.xml中使用,例如这里描述的:http://www.mkyong.com/jsf2/configure-managed-beans-in-jsf-2-0/
5条答案
按热度按时间kb5ga3dv1#
这个问题没有内置的解决方案,你可以使用一些第三方的解决方案,比如Apache DeltaSpike http://deltaspike.apache.org/,或者你自己使用CDI扩展来实现它。
sh7euo9m2#
我真的不知道这种配置可以在
beans.xml
中进行(这可能只在Spring中有效,但也许有人会纠正我)。初始化值的CDI方法是用@PostConstruct
注解的方法,所以尝试以下方法lc8prwob3#
您是否尝试过实现一个javax.enterprise. inject.spi.扩展,该扩展像这样 Package 一个注入目标来@Observes ProcessInjectionTarget?
这个例子从资源包注入bean值。
jobtbby34#
在您发布的示例链接中,如果您看到.xml文件,它会先使用包名,然后使用类名,因此如果您尝试将
<ress:Sample>
更改为<ress:net.resourceAuth.Sample>
,它可能会工作。bksxznpy5#
EJB可以通过XML进行配置。它是ejb-jar.xml