RepositoryRestResource资源在运行一段时间后开始返回404错误。

问题描述 投票:3回答:1

我有一个解决这个问题的方法,但我想把它贴出来,以防其他人遇到这个问题。

我们有一个Spring引导的web应用程序,它被打包成一个战争文件并部署到Tomcat上。它有几个用@RepositoryRestResource注解的PagingAndSortingRepository类,这些类服务于休息请求,还有一些用@RestController注解的其他类。RestController类确实会对repository类进行一些调用。

在spring-boot的2.2.5.RELEASE版本中,一切都能正常工作。在升级到2.2.6.RELEASE版本后,我们遇到了一个问题。一切都很好(意味着两种类型的休息资源都可以被访问),但是在运行了大约10-15分钟之后,所有通过RepositoryRestResource访问的东西都开始返回404错误。在任何日志中都没有错误信息,它们只是开始返回404错误,而之前它们一直工作正常。RestControllers一直都在正常工作。在恢复到2.2.5.RELEASE之后,我们没有再遇到任何问题。

由于我们使用的是dependencyManagement,我不认为这是一个版本不匹配的问题。pom.xml文件中的spring构件都没有版本。下面是pom中的内容。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.5.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
spring-boot spring-data-rest
1个回答
2
投票

在升级到spring-boot 2.2.6后,我重现了完全相同的问题:用@RepositoryRestResource注解的PagingAndSortingRepository类开始随机返回404错误。回滚到2.2.5版本解决了这个问题!


1
投票

这就是我们的问题:原来我们有多个context.xml文件和多个application.properties文件,尽管看起来主要的罪魁祸首是context.xml文件。有些东西(Netbeans?)一直在生成srcmainwebappMETA-INFcontext.xml文件,但在生产中我们使用的是外部文件,而不是与war文件捆绑在一起的文件。总之,发生的事情是在src中生成的context.xml文件与war文件捆绑在一起,而且它的路径与生产中的context文件不同。我不知道为什么,但当使用2.2.5版本时,它似乎忽略了那个虚假的捆绑的context.xml文件,而使用2.2.6版本时,它变得很困惑,并开始返回 "not found "错误。从 war 文件中删除那个无关的 context.xml 文件后,它就开始工作了。

这里是生成的(也是假的)context.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<Context path=""/>

这是工作中的app.xml文件,位于confCatalinalocalhost下。

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/tdapp" docBase="${catalina.base}/warfiles/tdapp.war">
    <Environment name="spring.config.location" value="file:/usr/share/tdapp/application.properties" type="java.lang.String"/>
</Context>

0
投票

这是在2.2.6中已知的问题,具体来说:https:/jira.spring.iobrowseDATAREST-1502。它的副作用是在几个小时后造成404错误(被其他人观察到,并报告为 https:/jira.spring.iobrowseDATAREST-1518。)

简而言之,升级到2.2.7+应该可以解决这个特殊问题。

© www.soinside.com 2019 - 2024. All rights reserved.