2016-01-20 83 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方法...

总之,现在它工作。

关注

相关问题