我正在研究基於spring和servlet的應用程序。 我的要求是從數據庫加載數據並存儲在ehcache中。我寫了一個監聽器,一旦jboss服務器啓動就調用它。但問題出在我的應用程序中,我們使用spring hibernate類來連接數據庫並從數據庫加載數據。 根據要求,數據必須從數據庫中檢索並存儲在緩存對象(ehcache)中。但是,當偵聽器類被加載時,其他XML配置文件(applicationContext.xml ..)尚未加載到配置數據源詳細信息以連接到數據庫的位置。以下是我的代碼:服務器啓動時從數據庫加載值
監聽器類。
import net.sf.ehcache.*;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/imports
public class MyInitializationListener extends HibernateDaoSupport implements ServletContextListener {
/** Singleton instance of CacheManager. */
private static CacheManager singletonManager = null;
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("--ServletContextListener destroyed*--");
}
private static CacheManager getInstance() {
if (singletonManager == null) {
singletonManager = CacheManager.create();
}
return singletonManager;
}
private Cache getCache() {
Cache cache = null;
cache = MyInitializationListener.getInstance().getCache("myCache");
return cache;
}
// Run this before web application is started
public void contextInitialized(ServletContextEvent arg0) {
final Cache cache = getCache();
final String dbValue = getDBValue();
//logic here
}
public String getDBValue() throws DataLayerException{
//logic to get the value from database
}
以下是例外:
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/eas-webservice/ivr]] Exception sending context initialized event to listener instance of class com.data.listener.MyInitializationListener
java.lang.NullPointerException
沒有任何一個面對這種情況before.What將是最好的方式連接到數據庫,並在得到緩存從數據庫和存儲的值服務器啓動。建議會有幫助。
--EDITED--
我試着使用@PostConstruct的方法來調用loadData()當服務器started.But當我在日誌文件中打印語句檢查以下方式是不存在其中規定,該方法在服務器啓動時未被調用。
@Component
public class MyDataStore {
@PostConstruct
public void loadData()
{
System.out.println("--In @postconstruct, loadData-");
}
}
我試着用PostConstruct,但是當我開始在服務器沒有調用PostConstruct的方法。我是否需要進行其他配置以使PostConstruct的工作方式變爲可用? – javaUser
不能,但確保bean正在創建。將System.out.println或其他東西放在構造函數中以確保是這種情況。 – Snickers3192
我已經使用帶有System.out.print語句的註釋方法PostConstruct創建了該類,並且在服務器啓動時未調用該類。 – javaUser