将客户端信息发送到ejb



我需要向现有的ejb项目添加某些功能。特别是客户端信息,如IP地址、登录凭据(连接的是谁)和客户端应用程序名称我的bean是无状态的,所以我担心这种方法存在问题。我的客户端代码目前有以下内容:

private static MySession getmySession() throws RemoteException {
  if(mySession != null) return mySession; //mySession is a private variable
  try {
      Properties h = new Properties();
      h.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
      h.put(Context.PROVIDER_URL, serverUrl ); //t3://localhost
      InitialContext ctx = new InitialContext(h);
      mySessionHome home = (mySessionHome) ctx.lookup( "mySessionEJB" );
      mySession = home.create();
      return mySession;
  } catch(NamingException ne) {
      throw new RemoteException(ne.getMessage());
  } catch(CreateException ce) {
      throw new RemoteException(ce.getMessage());
  }
 }

理想情况下,我希望我的'mySession'在它返回时知道客户端。如果这可能不可能,我想在MySession的一个特定方法被调用时发送一个客户端信息。在这段代码的某个地方

public static List getAllMembers() throws RemoteException, CatalogException    
{
 getMySession();
 List list = mySession.getAllMembers() );
 return list;
}

有很多这样的方法,所以这是不理想的。但如果能解决问题,我就接受。在一天结束时,当"getAllMembers()"在服务器上执行时,我想知道哪个客户机调用了它的特定信息。(可以有很多不同的,包括webservices)

谢谢

第一件事-您要对客户端信息做什么?如果您计划将其用于审计,那么这听起来是拦截器的完美用途!

访问用户信息的EJB方法是通过用户的主体,在无状态bean中使用这种方法没有问题。您可能会发现,这并没有得到您想要的所有信息-这个答案表明获取用户IP并不完全支持。

相关内容

  • 没有找到相关文章

最新更新