JSF 2.3 CDI没有在tomcat上工作

时间:2018-04-30 07:46:34

标签: jsf netbeans tomcat8 omnifaces jsf-2.3

我试图在tomcat 8上设置jsf 2.3每当我使用@inject我一直有错误我在googleoverflow.com上搜索并搜索但我找不到它的解决方案。我已经在@BalusC示例之后安装了CDI(Weld)来自How to install and use CDI on Tomcat?,但我仍然不满意依赖:没有bean匹配注入点。我想不出有什么我想念的吗?

ConfigurationBean.java

import static javax.faces.annotation.FacesConfig.Version.JSF_2_3;
import javax.faces.annotation.FacesConfig;
@FacesConfig(
     // Activates CDI build-in beans
     version = JSF_2_3
)
public class ConfigurationBean {
}

的beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
  version="1.1" bean-discovery-mode="all">
</beans>

faces-config.xml中

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.3"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd">
</faces-config>

PushBean.java

@Named
@ViewScoped
public class PushBean implements Serializable {
  @Inject @Push(channel="counter") //This is where i get the error message unsatisfied dependency: no bean matches the injection point
  private PushContext push;
}

对我来说,这段代码看起来不错,但我想知道它是否是netbeans bug。我试过没有使用弹簧只有tomcat与jsf我仍然得到相同的错误信息。我在堆栈跟踪中找不到任何错误消息。 Screen shot of the warning message in netbeans

2 个答案:

答案 0 :(得分:2)

Spring并不是一个完整的CDI容器,而且只知道&#39; @Named@Inject注释,因此不会(很可能)将@Push注释识别为限定符,并且无法找到bean并抛出您得到的错误(发布显式错误和堆栈跟踪顺便问一下你应该在一个问题中做些什么!)

另见:

答案 1 :(得分:-1)

我建议检查你的范围。内置的CDI范围是@ApplicationScoped,@ SessionScoped,@ ConversationScoped和@RequestScoped。 CDI中没有@ViewScoped注释。  你可以注入相同级别或更广泛的范围,但不能注入更小的范围(例如,你不能将@RequestScoped注入@SessionScoped bean)