我有一个焊接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>
暂无答案!
目前还没有任何答案,快来回答吧!