beans.xml拦截器无效,发现模式为“annotated”

muk1a3rh  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(281)

我有一个焊接cdi截击机,我似乎无法解决一点问题。当我包括 <interceptors> 在ejb项目的beans.xml中 <class> 标记被标记为无效。eclipse中的消息如下:
com.tura.person.service.transactioninterceptor“不是拦截器类[jsr-365§9.4]
在做了一些研究之后,问题似乎是我将bean发现模式设置为annotated。我想保持这个设置,那么如何在不将bean发现模式更改为“all”的情况下使我的拦截器可见呢?
以下是拦截器接口供参考:

package com.tura.person.service;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import javax.interceptor.InterceptorBinding;

@InterceptorBinding
@Target({METHOD, TYPE})
@Retention(RUNTIME)
public @interface Transactional {}

实施:

package com.tura.person.service;

import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

@Transactional 
@Interceptor
public class TransactionInterceptor {
   @AroundInvoke
   public Object manageTransaction(InvocationContext ctx) throws Exception {
       return null;
 }
}

以及beans.xml:

<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"
      bean-discovery-mode="annotated" >      
      <interceptors>
      <class>com.tura.person.service.TransactionInterceptor</class>
      </interceptors>
</beans>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题