我需要从父级发送到嵌套方法参数
我定义了一个 EJB 拦截器并在业务方法级别使用它我需要在嵌套方法中了解应从父调用程序方法(非业务数据)发送的一些信息,这些信息将在 aduit 中使用所以,我的问题是,InitationContext 是否传播到嵌套方法
我也遇到了类似的问题。据我所知,上下文不会传播到嵌套方法,至少它对我不起作用。如果您有一个 Activity 事务(使用 EJB 时,您可能有一个事务),您可以尝试使用 TransactionScoped bean 。如果没有事务,您可能会尝试定义自定义 bean 范围(在 CDI 中),但我没有尝试这样做。查看 TransactionScoped bean 的可能实现。
@SetAuditData
public void someMethod(String user, String foo...) throws Exception {
}
和拦截器(为简单起见,假设参数是第一个参数,它是一个字符串)
@SetAuditData
@Interceptor
public class AuditInterceptor {
@Inject
AuditTransactionalBean auditData;
@AroundInvoke
public Object setAuditData(InvocationContext ctx) throws Exception {
Object[] parameters = ctx.getParameters();
String user = (String) parameters[0];
auditData.setData(user);
return ctx.proceed();
}
}
还有一个保存数据的 bean(必须是可序列化的才能钝化)
@TransactionScoped
public class AuditTransactionalBean implements Serializable {
String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data=data;
}
}
然后可以将该 bean 注入(inject)到嵌套 bean/方法中。
我是一名优秀的程序员,十分优秀!