Ошибки инициализации в EJB заблокировали развертывание приложения WebLogic - PullRequest
0 голосов
/ 09 мая 2019

У меня есть клиентский класс от стороннего jar, который необходимо интегрировать в мое ушное приложение WebLogic. @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
}

Я вижу «Журнал инициализации ..» в журналах, но не «Завершенный инициат» в журнале строки после инициализации стороннего клиента.

Как правильно решить эту проблему? Заранее спасибо за помощь,

...