按照本指南,我已将Quarkus应用程序配置为在META-INF/Resources/
中找不到文件时返回自定义错误页面。
@ApplicationScoped
public class FileNotFoundHandler {
@Route(methods = Route.HttpMethod.GET, regex = "^/.+")
void activate404Intercepting(RoutingContext rc) {
((RoutingContextImpl) rc).currentRouter()
.errorHandler(404, errorContext -> errorContext.response()
.sendFile("notfoundpage.html")
);
rc.next();
}
}
当我在开发模式下使用Quarkus在本地运行代码时,这非常好。然而,当我构建优步jar时,行为是不同的:当我尝试访问未知路径时,会超时。
为什么我的优步jar表现不同,我该如何解决这个问题?任何帮助都将不胜感激。
经过一番调试,我发现在uber jar中调用了actiate404Intercepting
,但是相对路径没有找到notfoundpage.html,因为它在另一个位置。
我的解决方案:
@ApplicationScoped
public class FileNotFoundHandler {
private static final String INDEX_FILE_LOCATION = getPathToIndexFile();
private static String getPathToIndexFile(){
return Objects.nonNull(FileNotFoundHandler.class.getClassLoader().getResource("notfoundpage.html")) ?
"notfoundpage.html" : "META-INF/resources/notfoundpage.html";
}
@Route(methods = Route.HttpMethod.GET, regex = "^/.+")
void activate404Intercepting(RoutingContext rc) {
((RoutingContextImpl) rc).currentRouter()
.errorHandler(404, errorContext -> errorContext.response()
.sendFile(INDEX_FILE_LOCATION)
);
rc.next();
}
}
我有一个带有异步endpoint的quarkus应用程序,它创建一个具有默认属性的实体,在request方法中启动一个新线程,并执行一个长期运行的作业,然后返回该实体作为响应供客户端跟踪。 此外,长时间运行的作业将在实体运行时对其进行更新,因此它也必须是事务性的。但是,数据库实体没有得到更新。 这些是我面临的问题: 收到以下警告: 我尝试使用但没有用。 我尝试在上使用API方法,而不是在指南中提到
我想知道我什么时候该用哪个。我明白它们都集合了所有的依赖类,但是它们彼此之间有什么不同呢?
背景:本周我刚刚开始学习Quarkus,尽管我以前使用过一些流媒体平台(特别是scala中的http4s/fs2)。 工作与夸克斯反应性(与兵变)和任何反应性数据库客户端(兵变反应性postgres,反应性elasticsearch,等)我有点困惑如何正确管理阻塞调用和线程池。 quarkus文档建议使用注释命令式代码或cpu密集型代码,以确保将其转移到工作池以不阻塞IO池。这是有道理的。 考虑以
在代码示例中,在 当react遇到路由组件(react路由器的一部分)的渲染道具时,它会传递什么道具? 鉴于https://reactjs.org/docs/render-props.html ,render prop是一个函数prop,组件使用它来知道要渲染什么,是传递给props的值,该props埋在react router中的Route声明中
在本页React Native State on React Native docs中,我们有以下语句: 道具由父级设置,并且在组件的整个生存期内都是固定的。 但是,在本页React文档上的React State and Lifecycle中,我们有以下声明: 因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。 我的误解在哪里?对我来说,当组件
我在我的项目中使用react router,因为每个路由都有一个问题,在每个路由器路径的开始处都添加了“#”符号。。例如:http://localhost:3000/#/login 我想去掉那个标志,但我自己解决不了。 我的路由程序是在app.jsIM检查用户是否登录,如果没有登录,那么他将重定向到 /login页面。( 下面是app.js 否则他将登录,然后我将使用名为DefaultLayout