首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 5/Servlet2.5将EJB注入ServletFilter

Java 5/Servlet2.5将EJB注入ServletFilter
EN

Stack Overflow用户
提问于 2012-05-29 09:52:19
回答 2查看 2.9K关注 0票数 1

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

代码语言:javascript
复制
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();
    }
}

结果在NullPointerException中,因为myEjb为null。使用的平台是JBoss 5.1EJB,可以从其他EJB或Servlets正确地访问MyBean。

谢谢。

问题解决了(虽然我不知道原因):

应用程序由三个构件组成:-一个包含EJB的jar -包含servlet的war -包含上述两种内容的ear

如果我将过滤器打包到jar中,就会出现问题。如果我将它与war中的servlet一起打包,问题就不会发生。

因此,眼前的问题解决了,但不被理解。

也许有人能帮我理解这一点?

EN

回答 2

Stack Overflow用户

发布于 2012-05-30 03:15:31

如果servletEJB都不在单个ear文件中,则在注入EJB时必须使用@EJB(mappedName="name")。有关更多细节,请查看这个职位

相关链接:外部模块注入

当然,Filter是一种Servlet,因此被称为"Servlet过滤器“。ServletFilter都是web组件,因此属于web存档,.war,而不是.jarjar中的过滤器不会被扫描以注入这种注释,并且将作为任何其他常规的Java类来处理。

票数 3
EN

Stack Overflow用户

发布于 2016-08-04 06:10:16

我们面临着一个类似的问题,我们有一些@WebFilter@WebListener组件打包在一个没有被读取的Jar中(注释没有被处理)。

其目的是告诉容器扫描其他jars,寻找其他带注释的组件。

我们实现了将属性metadata-complete添加到web.xml声明中的目标。示例:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app  version="3.0" 
          xmlns="http://java.sun.com/xml/ns/javaee" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          metadata-complete="false">
  
  ...NORMAL_CONTENT_HERE...
  
</web-app>

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10796759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档