У меня есть клиентский класс от стороннего 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
}
Я вижу «Журнал инициализации ..» в журналах, но не «Завершенный инициат» в журнале строки после инициализации стороннего клиента.
Как правильно решить эту проблему? Заранее спасибо за помощь,