在我的应用程序中,我有一个使用对Utils
类的引用的类。想要CDI友好,我写
public abstract class CommonClientBase<InterfaceType> {
/**
* Used utility class
*/
private @Inject Utils utils;
}
其中Utils是一个简单的类,绝对没有构造函数,没有注入字段。
我必须补充一点,我的项目声明了一个META-INF / beans.xml文件,包含
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:weld="http://jboss.org/schema/weld/beans"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
<weld:scan>
<weld:exclude name="org.granite.cdi.**"/>
</weld:scan>
</beans>
那么,什么可以使我的utils
引用在应用程序加载后保持null
,更重要的是,我如何解决该无效问题?
顺便说一句,我必须说这段代码曾经与Weld 1.0.1-Final
一起使用,但现在却因Weld 1.1.4.Final
编辑另请注意,抽象类也通过限定的子类实例使用:
@JndiClient
public class ClientEJBInterfaceJndiClient extends CommonClientBase<ClientEJBInterface> implements ClientEJBInterface {
}
这是从某些服务器端代码生成的。