JavaEE5/Servlet2.5将EJB注入ServletFilter
我想将会话bean注入我的ServletFilter,这似乎不起作用。你能告诉我如何做到这一点吗JavaEE5/Servlet2.5将EJB注入ServletFilter,java,jakarta-ee,ejb,servlet-filters,java-ee-5,Java,Jakarta Ee,Ejb,Servlet Filters,Java Ee 5,我想将会话bean注入我的ServletFilter,这似乎不起作用。你能告诉我如何做到这一点吗 public class MyExample implements Filter { @EJB private MyBean someEjb; @Override public void destroy() { } @Override public void init(FilterConfig filterConfig) throws Se
public class MyExample implements Filter {
@EJB
private MyBean someEjb;
@Override
public void destroy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException{
someEjb.toString();
}
}
由于myEjb为null,因此导致NullPointerException。使用的平台是JBoss5.1
可以从其他EJB或servlet正确访问MyBean
多谢各位
问题已解决(尽管我不知道原因): 该应用程序由三个构件组成: -包含EJB的jar -包含servlet的战争 -包含上述两种元素的耳朵 如果我将过滤器打包到jar中,就会出现问题。如果我在战争中将它与servlet打包在一起,那么问题就不会发生 所以,眼前的问题解决了,但还没有被理解
也许有人能帮我理解这一点?如果
servlet
和EJB
都不在一个ear文件中,那么在注入EJB时必须使用@EJB(mappedName=“name”)
。查看更多详细信息
相关链接:
当然,
Filter
是一种Servlet
,因此被称为“Servlet过滤器”。而且Servlet
和Filter
都是web组件,因此属于web归档,.war
,而不是Java归档,.jar
。jar
中的过滤器将不会被扫描以注入这种注释,并将作为任何其他常规Java类处理。我们面临类似的问题,我们在jar中打包了一些@WebFilter
和@WebListener
组件,但这些组件没有被读取(注释没有被处理)
目的是告诉容器扫描其他jar,寻找其他带注释的组件
我们实现了将属性元数据complete
添加到web.xml声明中的目标。
例如:
…这里的正常内容。。。
您好,谢谢您的回答。不幸的是,它们都在同一个耳朵里。@FabianFörster:尝试使用@EJB(beanName=“MyBeanImpl”)
@FabianFörster:当然,过滤器
是一种Servlet
,因此被称为Servlet过滤器
。而且Servlet
和Filter
都是web组件,因此属于web归档,.war
,而不是Java归档,.jar
。