EJB中的初始化错误阻止了WebLogic应用程序的部署

时间:2019-05-09 02:54:41

标签: java asynchronous java-ee initialization weblogic

我有一个来自第三方jar的客户端类,需要将其集成到我的WebLogic ear应用程序中。创建一个@Startup @Singleton EJB来包含并调用此第三方客户端的初始化。 但是在第三方客户端初始化期间,它试图创建自己的一些JMS连接器并失败了(因为在测试环境中没有连接),然后卡在了那里,没有返回客户端实例。 结果,我的耳朵应用程序的部署出现“错误,等待完成:超时:激活状态:STATE_DISTRIBUTED”,无法完成正常部署,并且状态为“活动”。

我试图使初始化方法异步或使整个单例EJB异步,但没有成功。

@Singleton
@Startup
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class ClientStartupBean
{
  ThirdPartyClient client = null;

  public ClientStartupBean()
  {
    //some init
  }

  @PostConstruct
  public void initialize()
  {
    try
    {
      Trace.info(TCI, MN, "Start to init 3rd party client");

      client = ThirdPartyClient.getThirdPartyClient(some_init_para_a, init_para_b);

      Trace.info(TCI, MN, "Finished init of 3rd party client");
    }
    catch (Exception e)
    {
      throw new EJBException(e);
    }
  }
  //other stuff
}

在第三方客户端初始化之后,在日志行中可以看到“开始初始化..”,但在日志中看不到“完成的初始化”。

解决此问题的正确方法是什么?预先感谢您的帮助,

0 个答案:

没有答案