gpt4 book ai didi

java - Spring需要重新启动服务器来刷新域对象

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:23 25 4
gpt4 key购买 nike

各位:

我整个上午都在努力寻找我的 spring Controller 的问题所在,在进入数据库并根据此类 ddbb 中的数据刷新表时,该 Controller 无法正常工作。

我有一个用于所有业务逻辑的单独项目,我将其导出为 JAR,并将其包含到我的 Web Spring MVC 应用程序的 lib 文件夹(和类路径)中。我有一个用于这样的 UploadCalendar.jsp 的 Controller ,我从中实例化一个域服务(外部 jar),理论上它会进入数据库,获取有关日期和轮流(繁忙和可用)的所有信息,然后绘制日历(表格)以上传到 WordPress 站点。jsp只运行流程的业务逻辑,贯穿整个外部服务类。

因为如果我从 Web 应用程序外部运行 uploadCalendar 方法,它会完美运行,所以我很困惑为什么从 Spring Controller 内运行完全相同的方法,它不会更新日历。

我不得不说,通过我的服务类,我进入数据库,并将执行 getCalendar() String 方法所需的所有数据加载到内存中。然后,我创建一个文件,并将该文件上传到远程服务器。

我不知道是否是Spring避免重新加载数据,即使数据更改为ddbb?

我的 Controller 代码是这样的:

@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");
}

我做了很多调试,只是为了发现这不是代码错误,而是网络应用程序的一些缓存问题,因为如果我重新启动服务器,那么日历会正确更新,文件会正确更新,一切都会好起来。但是,如果我再次进入数据库并更改一行,我还需要重新启动服务器才能更新日历字符串。

您知道问题可能与什么有关吗?

最佳答案

终于找到问题所在了。我把它写下来以防万一有人遇到同样的问题:

我将 ddbb 中的数据保存到 Service 类的全局属性中。 getCalendarTableString() 没有调用 ddbb 将数据更新到属性中。每次我从控制台场景中执行“算法”时,Java 都会从头开始创建和实例化服务类,因此每次 getCalendarTableString 方法都会获取 ddbb 的新快照。但是当从网络应用程序调用时,如果我在让 tomcat 实例化该类后更改 ddbb 中的一行,因为 getCalendar 认为数据应该存在于全局属性中并且没有再次调用 ddbb,所以它正在获取旧数据。

但是...我不知道为什么当我刚刚将 loadAllTurns() 添加到 Controller 上的 GET 方法时失败...

无论如何,它现在可以工作了。

问候

关于java - Spring需要重新启动服务器来刷新域对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com