- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用java做一些测试示例,我想出了一个使用@AroundInvoke的示例。问题是我不知道调用方法的确切位置。
这个测试在调用 post() 方法的地方进行了调用,但我真的不知道它是如何工作的( Using Interceptors explanation )。
@Test
public void crudtest() {
JsonObjectBuilder todoBuilder = Json.createObjectBuilder();
JsonObject todoToCreate = todoBuilder.
add("caption", "implement").
add("priority", 10).
build();
//The next post execute, invoke the method
Response postResponse = this.provider.target().request().
post(Entity.json(todoToCreate));
}
...
public class BoundaryLogger {
@Inject
Event<CallEvent> monitoring;
@AroundInvoke
public Object logCall(InvocationContext ic) throws Exception {
long start = System.currentTimeMillis();
try {
return ic.proceed();
} finally {
long duration = System.currentTimeMillis() - start;
monitoring.fire(new CallEvent(ic.getMethod().getName(), duration));
}
}
}
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class MonitorSink {
@Inject
LogSink LOG;
public void onCallEvent(@Observes CallEvent event){
LOG.log(event.toString());
}
}
最佳答案
我想通了,通过做另一个拦截器的例子。
@AroundInvoke 只是定义一个拦截器,它将被具有@Interceptor(name_class.class) 的类调用。
就我而言,这是我缺少的代码。
ToDoManager.java
@Stateless
@Interceptors(BoundaryLogger.class)
public class ToDoManager {
@PersistenceContext
EntityManager em;
public ToDo findById(long id) {
return this.em.find(ToDo.class,id);
}
public void delete(long id) {
try {
ToDo reference = this.em.getReference(ToDo.class, id);
this.em.remove(reference);
} catch (EntityNotFoundException e) {
//we want to remove it...
}
}
public List<ToDo> all() {
return this.em.createNamedQuery(ToDo.findAll, ToDo.class).getResultList();
}
public ToDo save(ToDo todo) {
return this.em.merge(todo);
}
public ToDo updateStatus(long id, boolean done) {
ToDo todo = this.findById(id);
if(todo == null){
return null;
}
todo.setDone(done);
return todo;
}
}
关于jakarta-ee - @AroundInvoke 拦截器在哪里调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32402444/
我有关于 aroundInvoke 注释的问题。假设我有一个带有方法 a 的 bean,它在某些拦截器中通过带有注释 aroundInvoke 的方法进行了增强。方法a在签名中没有任何异常,而“增强”
我正在用java做一些测试示例,我想出了一个使用@AroundInvoke的示例。问题是我不知道调用方法的确切位置。 这个测试在调用 post() 方法的地方进行了调用,但我真的不知道它是如何工作的(
有 3 个项目使用 CDI。项目 A 有一个用于事务控制的拦截器。 项目 B 使用项目 A 将数据保存在数据库中。当我运行这些单元测试时,一切都通过了。 项目 C 使用项目 B 进行集成测试。当它从
我创建了以下调用类,当调用拦截的方法时,应该调用它: import javax.interceptor.AroundInvoke; import javax.interceptor.Intercept
class AbstractXYZClass{ ... @AroundInvoke public Object intercept(InvocationContext ctx) ... {
总结 @AroundInvoke拦截器在 @WebService 上被调用两次类(class),如果拦截的方法是通过作为 SOAP Web 服务的端点从应用程序的外部调用的。 如果从另一个 bean
应用服务器:JBOss 4.2 我有一个要拦截的方法。它是一个注释为@Timeout 并由 javax.ejb.TimerService 实例调用的方法。 方法签名: @Stateless class
我有一个关于 Java EE Web 服务的 @AroundInvoke 的问题:我正在使用此类作为 REST 服务的拦截器(它正在运行): public class AuthenticationIn
我有一个 @AroundInvoke REST Web 服务拦截器,我想用它来记录常见数据,例如类和方法、远程 IP 地址和响应时间。 使用 InvocationContext 获取类和方法名很简单,
我有一个带有模块的 EAR: foo-api.jar foo-impl.jar 拦截器.jar 在 foo-api 中有: @Local FooService // (interface of a l
我是一名优秀的程序员,十分优秀!