首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java拦截器不使用web的web应用程序

Java拦截器不使用web的web应用程序
EN

Stack Overflow用户
提问于 2014-12-03 10:38:35
回答 1查看 1.9K关注 0票数 1

我已经创建了一个web应用程序,它使用Weld-2.2.0CDI实现,并运行在Tomcat-7上。我已经创建了一个拦截器来记录方法调用。但是,当我运行应用程序时,它会绕过拦截器并直接调用方法。

我的拦截器构造如下:

拦截器绑定:

代码语言:javascript
复制
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface LogMe{

}

拦截器类别:

代码语言:javascript
复制
@LogMe
@Interceptor
public class LogInterceptorImpl
{
    private static final Logger log = LogManager.getLogger(LogInterceptorImpl.class);      

    @AroundInvoke
    public Object intercept(InvocationContext ctx) throws Exception
    {
        log.debug("LogInterceptor::intercept");
        return ctx.proceed();
    }    
}

拦截目标:

代码语言:javascript
复制
@LogMe
public class DefaultAppController extends AbstractBaseController
{
    private static final long serialVersionUID = 1L;

    public DefaultAppController()
    {

    }

    @Override @LogMe
    public void processRequest(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException
    {
        resp.getWriter().write("Hello, Guest !");
    }

}

最后,我创建了如下beans.xml文件:

代码语言:javascript
复制
<beans 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/beans_1_0.xsd">
    <interceptors>
        <class>x.web.interceptors.LogInterceptorImpl</class>
    </interceptors>
</beans>

我还在context.xml文件和web.xml文件中创建了焊缝资源引用(如焊接文档所述)。

代码语言:javascript
复制
<Resource name="BeanManager" 
        auth="Container"
        type="javax.enterprise.inject.spi.BeanManager"
        factory="org.jboss.weld.resources.ManagerObjectFactory" />

代码语言:javascript
复制
<resource-env-ref>
        <resource-env-ref-name>BeanManager</resource-env-ref-name>
        <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
    </resource-env-ref>

我尝试了大量的视光器,包括使用焊猫支持jar进行集成,但它们似乎都不起作用。

有人能帮我吗?

我是错过了还是做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 11:02:30

我不认为拦截器在Java容器之外工作。我想独立焊接只能做DI,但不能做其他功能。还请参阅以下文章:Is it possible to use javax.interceptor in a Java SE environment?

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

https://stackoverflow.com/questions/27269482

复制
相关文章

相似问题

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