将客户信息发送到ejbs

时间:2015-10-19 19:42:07

标签: java ejb ejb-2.x

我需要为现有的ejb项目添加某些功能。 具体而言 - 客户端信息,例如IP地址,登录凭据(已连接)和客户端应用程序名称 我的豆是无国籍的,所以我担心这种方法存在问题。 我的客户端代码目前有以下内容:

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的特定方法时发送客户端信息。 在此代码的某处

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

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

由于

1 个答案:

答案 0 :(得分:1)

首先 - 您对客户信息做了什么?如果您计划将其用于审核,这听起来像是Interceptors的完美用法!

访问用户信息的EJB方式是通过用户的Principal,在无状态bean中使用它没有问题。您可能会发现这并不能获得您想要的所有信息 - this answer建议不要完全支持用户IP。