【发布时间】:2015-11-22 09:47:19
【问题描述】:
下面是一个简单的网络应用程序,配置为在 glassfish4 上运行的 Rest 服务。该应用程序本身可以工作,可以访问单个资源。
Interceptor 对 pong() 不起作用,但对 helloW() 却神奇地起作用。当我为 helloW() 激活时,我可以修改和覆盖参数,可以抛出异常等...但是这些都不适用于 pong()。在其他地方,我尝试使用无状态 ejb - 结果相同 - 无法正常工作 - 即使使用 ejb-jar 程序集绑定部署描述符。为什么?
休息:
package main;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/service")
@javax.ejb.Stateless
public class Service {
@GET
@Produces("text/plain")
// @javax.interceptor.Interceptors({Intercept.class})
public String helloW(String ss){
String msg = pong("QQ");
return msg;
//return ss;
}
@javax.interceptor.Interceptors({Intercept.class})
public String pong(String m){
String temp = m;
return temp;
}
}
拦截器本身:
package main;
@javax.interceptor.Interceptor
public class Intercept {
@javax.interceptor.AroundInvoke
Object qwe(javax.interceptor.InvocationContext ctx) throws Exception{
ctx.setParameters(new Object[]{"intercepted attribute"});
throw new Exception();
// return ctx.proceed();
}
}
是的,我确实尝试过 beans.xml:
<interceptors><class>main.Intercept</class></interceptors>
不开心。
【问题讨论】:
标签: java jakarta-ee ejb interceptor