我有一个来自第三方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
}
在第三方客户端初始化之后,在日志行中可以看到“开始初始化..”,但在日志中看不到“完成的初始化”。
解决此问题的正确方法是什么?预先感谢您的帮助,