我有一个 EJB 应用程序,它由两个 Bean(Web 层)和(业务层)组成,其中注入了 .ServiceEJBBusinessEJBBusinessEJBServiceEJB
ServiceEJB从浏览器接收 HTTP 请求,调用 中的方法,获取结果,然后发送 HTTP 响应。BusinessEJB
此外,还有权访问存储登录用户的对象。无权访问对象。ServiceEJBHttpSessionuserIdBusinessEJBHttpSession
应用程序需要记录消息(例如,使用 sl4j/logback)。它可以在 or 中记录消息,并且当它记录消息时,它必须在日志条目中包含会话。ServiceEJBBusinessEJBuserId
由于 没有 ,它需要从 中获取它。问题是实现这一目标的最佳方式是什么。我不想做的是将字段作为参数添加到 中的每个方法中,因为应用程序中有许多s和s(以及由其调用的其他bean也生成日志条目),并且我不想用该字段污染应用程序。相反,我可以在EJB级别有一个字段,但是如何填充它们?有没有办法通过注释来实现这一点?欢迎任何建议。BusinessEJBuserIdServiceEJBuserIdBusinessEJBServiceEJBBusinessEJBBusinessEJBuserIduserId
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Stateless
public class ServiceEJB {
@Context
HttpServletRequest httpRequest;
@Inject
private BusinessEJB bean;
private String userId;
@Path("someurl")
public Response someMethod1() {
final HttpSession session = httpRequest.getSession();
// get the userId from the session
String s = bean.someMethod2();
// return Response
}
}
@Stateless
public class BusinessEJB {
private String userId;
public String someMethod2() {
// .... log an entry with userId
return "something";
}
}
DIEA
天涯尽头无女友
相关分类