【问题标题】:How to setup timeout for ejb lookup in websphere 7.0如何在 websphere 7.0 中为 ejb 查找设置超时
【发布时间】:2013-01-28 21:15:31
【问题描述】:

我开发了一个独立的 Javase 客户端,它对远程服务器执行 EJB 查找并执行其方法。服务器应用程序在 EJB 3.0 中

在一些奇怪的神奇但罕见的情况下,我的程序无限期挂起,在查看问题内部时,似乎在服务器上查找 ejb 时,我从未得到服务器的响应,它也从未超时。

我想知道是否有一个属性或任何其他方式可以让我们在客户端或服务器端设置查找时间。

【问题讨论】:

    标签: java websphere ejb-3.0 jndi websphere-7


    【解决方案1】:

    您可以尝试以下代码,它执行任务然后最多等待指定的时间。

    Future<Object> future = executorService.submit(new Callable<Object>() {
    public Object call() { 
    return lookup(JNDI_URL); 
                 }
             });
    
         try {
                Object result = future.get(20L, TimeUnit.SECONDS); //- Waiting for at most 20 sec
         } catch (ExecutionException ex) { 
           logger.log(LogLevel.ERROR,ex.getMessage());  
           return; 
        }
    

    另外,任务可以通过future.cancel(true)取消。

    【讨论】:

    • 嗯,这是一个不错的解决方案,即使我认为使用单独的线程也可以实现类似的实现。
    • 但我正在寻找我可以设置的参数或属性,以便库本身处理超时。有没有类似的东西。
    • @AkhandpratapSingh 如果这可以完成您的尝试,为什么要去图书馆。您可以在属性文件中配置超时持续时间。 Quartz 可能会有所帮助,但对我来说似乎有点矫枉过正。
    • 嗯...不应该有WAS的配置参数吗?
    • @ŁukaszSiwiński 客户端是 Java SE 并在那里执行查找。我认为客户端没有在 WAS 上运行。
    【解决方案2】:

    远程 JNDI 使用 ORB,因此唯一可用的选项是 com.ibm.CORBA.RequestTimeout,但这会对所有远程调用产生影响。如7.0 InfoCenter 中所述,默认值为 180(3 分钟)。

    【讨论】:

      【解决方案3】:

      DeveloperWorks here 上有一篇非常好的文章讨论了 ORB 配置最佳实践。我引用了可以在客户端配置的三种不同设置(您在远程服务器上进行查找和执行方法时);

      • 连接超时:在客户端 ORB 甚至可以向服务器发送请求之前,它需要建立一个 IIOP 连接(或重新使用一个 现有的)。一般情况下,IIOP 和底层 TCP 连接操作应该很快完成。然而,争论 网络或其他不可预见的因素可能会减慢这一速度。这 默认连接超时是不确定的,但 ORB 自定义属性 com.ibm.CORBA.ConnectTimeout(以秒为单位)可用于更改 超时。

      • 定位请求超时:一旦建立连接并且客户端向服务器发送 RMI 请求,然后 LocateRequestTimeout 可用于限制 CORBA LocateRequest(一个 CORBA “ping”)的对象。因此,LocateRequestTimeout 应该 小于或等于 RequestTimeout,因为它是一个很大 就来回发送的数据而言,操作更短。如 RequestTimeout,LocateRequestTimeout 默认为 180 秒。

      • 请求超时:一旦客户端 ORB 与服务器建立了 TCP 连接,它将发送请求。然而,它 不会无限期地等待响应,默认情况下它会等待 180 秒。这是 ORB 请求超时间隔。这个可以 通常会降低,但应该符合预期 来自服务器的应用程序响应时间。

      【讨论】:

      • 感谢 Kurtcebe 的文章,它确实回答了我一直在寻找的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 2014-10-26
      • 1970-01-01
      • 2012-11-24
      • 2019-05-17
      相关资源
      最近更新 更多