Quarkus Reactive Routes:uber jar 中的不同行为
Quarkus Reactive Routes: different behaviour in uber jar
在 this guide 之后,我已将我的 Quarkus 应用程序配置为 return 当在 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 在本地 运行 我的代码时,这工作得很好。但是,当我构建一个 uber jar 时,行为有所不同:当我尝试访问未知路径时出现超时。
为什么我的 uber jar 表现不同,我该如何解决这个问题?任何帮助将不胜感激。
经过一些调试,我发现在uber jar中调用了activate404Intercepting
,但是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();
}
}
在 this guide 之后,我已将我的 Quarkus 应用程序配置为 return 当在 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 在本地 运行 我的代码时,这工作得很好。但是,当我构建一个 uber jar 时,行为有所不同:当我尝试访问未知路径时出现超时。
为什么我的 uber jar 表现不同,我该如何解决这个问题?任何帮助将不胜感激。
经过一些调试,我发现在uber jar中调用了activate404Intercepting
,但是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();
}
}