Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaEE5/Servlet2.5将EJB注入ServletFilter_Java_Jakarta Ee_Ejb_Servlet Filters_Java Ee 5 - Fatal编程技术网

JavaEE5/Servlet2.5将EJB注入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

我想将会话bean注入我的ServletFilter,这似乎不起作用。你能告诉我如何做到这一点吗

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