我有一個應用程序連接到EJB來檢索一些數據。 EJB在單獨的EAR中。 該應用程序正在使用委託 - 單例模式來獲得與EJB的連接。問題是,EJB經常重新部署,因爲它仍在開發中,每次發生這種情況時,由於單例的getInstance方法一直返回一個空的遠程對象引用和連接,所以當EJB重新聯機時,我的應用程序最終斷開連接並無法重新連接不能重新建立,所以我必須重新部署我的客戶端應用程序才能重新連接。 有什麼辦法可以避免這種情況發生,那不涉及對每個請求進行查找?重啓後失去連接到EJB
public class Delegate
{
...
private DataStoreService getDataStoreServiceInterface {
ServiceLocator serviceLocator = ServiceLocator.getInstance();
return serviceLocator.getDataStoreService();
}
public Data getData(){
DataStoreService dataStoreService = getDataStoreServiceInterface();
return dataStoreService.getData();
}
}
public class ServiceLocator{
private static ServiceLocator instance = null;
private DataStoreService dataStoreService = null;
protected Context context;
private ServiceLocator(){
context = new InitialContext();
dataStoreService = (DataStoreService)context.lookup(DataStoreService.class.getName());
}
static public ServiceLocator getInstance(){
if (instance == null) {
instance = new ServiceLocator();
}
return instance;
}
}
捕獲遠程EJB引用是一種常見的做法,效果很好,你應該檢查,如果你的服務器版本有與此問題有關的一些錯誤。 – 2014-11-14 17:44:19