用于多个连接的JavaEE + EJB InitialContext + ProgrammaticLogin

时间:2014-05-25 14:17:31

标签: java java-ee ejb

我有一个gui(swing)客户端应用程序,我希望它同时连接到不同的javaee服务器(gf4)。

我坦率地说我是javaee world和jaas的新手,所以如果我错了,请纠正我。

据我所知,InitialContext是通过工厂为每个环境初始化的,最重要的是它初始化一次并在客户端运行时一次又一次地使用(工厂保留它)。这就是为什么第一个初始上下文创建如此之久以及下一次创建它的速度很快的原因。我在阅读this后明白了这一点。

问题。如果我是对的,是否可以取消初始化某些上下文以进行初始化?

问题二。每次我们想要查找ejb时创建initialcontext是否正常?我的意思是

InitialContext ctx = new InitialContext(Test.getContextEnv(0));

问题三。当我们通过ProgrammaticLogin()登录以访问ejb时,我们如何才能将此ProgrammaticLogin()与某些initialcontext匹配?我的意思是,如果我们有两个java ee服务器,我们如何使用不同的login / pass连接到每个服务器。

编辑: 问题三在这里得到解答 - How to remotely connect to multiple Glassfish 4+ instances simultaneously?

1 个答案:

答案 0 :(得分:0)

  

问题一。如果我是对的,是否可以取消初始化某些上下文以进行初始化?

更简单的方法是创建一个具有不同环境属性的新InitialContext实例。

  

问题二。每次我们想要查找ejb时创建initialcontext是否正常?

没有必要,您可以使用相同的实例来查找绑定到同一上下文的ejb引用。 请记住,InitialContext实例未同步,因此,如果多个线程同时使用同一个实例,则会出现问题。

  

问题三。当我们通过ProgrammaticLogin()登录以访问ejb时,我们如何才能将此ProgrammaticLogin()与某些initialcontext匹配?我的意思是,如果我们有两个java ee服务器,我们如何使用不同的login / pass连接到每个服务器。

我不确定我是否正确理解了这个问题,但是如果你有几个InitialContext实例, 每个都使用不同的环境属性初始化,您可以通过编程方式确定哪个InitialContext(因此,哪个服务器)是执行登录操作的正确的。