2016-01-20 130 views
0

傢伙:Spring需要重新啓動服務器刷新域對象

我已經爲了找到什麼是我的春天控制器,它並沒有正常工作,而進入數據庫,並刷新該問題的所有上午的戰鬥表取決於這種ddbb內的數據。

我有一個單獨的項目,用於所有業務邏輯,我將其導出爲JAR,並將其包含到我的Web Spring MVC應用程序的lib文件夾(和類路徑)中。 我有一個這樣的UploadCalendar.jsp的控制器,從中我實例化了一個理論上進入數據庫的域服務(外部jar),抓住了所有的信息並且輪流(忙和可用),然後繪製一個日曆(表格)上傳到WordPress的網站。 jsp只在整個外部服務類中運行進程的業務邏輯。

因爲如果我從Web應用程序外部運行uploadCalendar方法,它運行得很完美,我很困惑爲什麼從Spring控制器運行完全相同的方法,它不更新日曆。

我不得不說,用我的服務類,我進入數據庫,並加載到內存中執行getCalendar()String方法所需的所有數據。然後,我創建一個文件,並將該文件上傳到遠程服務器。

我不知道是否Spring是避免重新加載數據,即使數據更改爲ddbb?

我的控制器代碼是這樣的:

@Autowired 
FileService fileService; 

@Autowired 
MainService main; 

@RequestMapping(path="/uploadCalendar", method=RequestMethod.GET) 
public ModelAndView UploadCalendar() throws IOException, DDBBException{ 
    //This, in theory, should get into the ddbb, and load all needed data 
    main.loadAllTurns(); 

    //Runs getCalendar, takes the calendar string, and writes a local file 
    fileService.WriteFile(main.getCalendarTableString(), conf.getCalendarFile2UploadURI()); 

    //Upload the file 
    fileService.UploadFileFTP(conf.getCalendarFile2UploadURI(), conf.getCalendarRemoteFileURI()); 

    return new ModelAndView("/web/UploadCalendar.jsp"); 
} 

我已經作出了很多調試的,只是發現它是不是一個錯誤代碼,而只是無論如何一些緩存問題與網絡的應用程序,因爲如果我重新啓動服務器,然後日曆正確更新,文件正確更新,並且一切正常。 但是,如果我再次進入數據庫並更改一行,我還需要重新啓動服務器以更新日曆字符串。

你對這個問題可能與什麼有關嗎?

+0

另外:如果我在eclipse上點擊「刷新」項目... tomcat重新加載...並且它也更新日曆...因此,它不僅重新啓動服務器,而且還會刷新eclipse項目(最後,它將推動tomcat重新加載)。 –

+0

另外,如果我將Web應用程序部署到另一個Tomcat服務器上,我遇到同樣的問題:我需要重新啓動tomcat以更新ddbb更改的文件 –

回答

0

最後,我發現有什麼問題。我把它寫下來以防萬一有人遇到同樣的問題:

我正在將ddbb中的數據保存到Service類的全局屬性中。並且getCalendarTableString()不調用ddbb來將數據更新到屬性中。我每次在控制檯場景中執行「算法」時,Java都從頭開始創建和實例化服務類,所以每次getCalendarTableString方法都會獲得ddbb的新快照。 但是,當從Web應用程序調用時,如果我在讓tomcat實例化類之後更改了ddbb中的一行,由於getCalendar相信數據應該存在於全局屬性中,並且不再調用ddbb,它正在舊數據。

不過......我不知道爲什麼會失敗,當我剛剛加入loadAllTurns()控制器上的GET方法...

總之,現在它工作。

關注

相關問題