我目前正在尝试在Quarkus 1.13中注入和读出HttpRequest,但是没有任何成功。我使用RESTEasy-Reactive作为我的endpoint。
这就是我目前包含它的方式。
@Path("/users/{id}")
class UserController(
@Inject val service: UserService,
@Context val httpRequest: io.vertx.core.http.HttpServerRequest,
)
...
构建过程成功,但是当我试图访问像< code > http request . absolute uri()这样的属性时,我得到了一个NPE
java.lang.NullPointerException: Cannot invoke "org.jboss.resteasy.reactive.server.core.ResteasyReactiveRequestContext.serverRequest()" because the return value of "org.jboss.resteasy.reactive.server.core.CurrentRequestManager.get()" is null
at io.quarkus.resteasy.reactive.server.runtime.QuarkusContextProducers.httpServerRequest(QuarkusContextProducers.java:26)
at io.quarkus.resteasy.reactive.server.runtime.QuarkusContextProducers_Subclass.httpServerRequest$$superaccessor3(QuarkusContextProducers_Subclass.zig:451)
at io.quarkus.resteasy.reactive.server.runtime.QuarkusContextProducers_Subclass$$function$$3.apply(QuarkusContextProducers_Subclass$$function$$3.zig:29)
...
我还尝试了其他类,如io.vertx.mutiny.core.http.HttpServerRequest
或java.net.http.HttpRequest
,但仍然没有成功。用@Inject
注入它甚至没有构建。我缺少HttpServletRequest
类:/
有人有主意吗?
你有几个选择:
使用HttpFilter:https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpFilter.html
@WebFilter(urlPatterns = "/*")
public class FilterEverything extends HttpFilter {
@Override
protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
//Do something with HttpServletRequest
}
}
使用container request filter:https://docs . Oracle . com/javaee/7/API/javax/ws/RS/container/container request filter . html
作为Quarkus文档展示:
@Provider
public class LoggingFilter implements ContainerRequestFilter {
private static final Logger LOG = Logger.getLogger(LoggingFilter.class);
@Context
UriInfo info;
@Context
HttpServerRequest request;
@Override
public void filter(ContainerRequestContext context) {
//Do whatever you want
}
}
作为方法签名的一部分:
@GET
@Path("/someEndPoint")
@Produces("application/json")
public JsonObject getData(@PathParam("owner") String owner, @Context HttpServletRequest request) {
//Do something here
}
如果在批处理过程中发生错误,Oracle JDBC驱动程序将引发BatchUpdateException。使用NamedParameterJdbcDaoSupport插入数据,如下所示 由于唯一密钥约束,我遇到BatchUpdateException,我们正在处理数百万条记录,因此我们无法进入数据库检查唯一密钥。 如果一条记录失败,那么批插入不会失败。
我有一个REST应用程序,其中所有方法都需要身份验证。如果用户调用方法时没有身份验证信息,或者他没有所需的角色,Quarkus将发送http status 401/403,但不记录任何内容。 是否有方法拦截失败的身份验证尝试?
我正在尝试将文件插入到现有表中。现有的表有3列,这些列是ID(在表中分配)、学生号和组号。 在我的中,我有下面的格式,但是每次插入它时,我都会得到一个错误
我设置了一些HTTP请求头,如下所示: 我是这样捕捉它们的: 当我运行测试工具时,一切似乎都很好: 主持人:domain.com 但是,在Wireshark和Fiddler中,仅发送以下标头: 获取/HTTP/1.1 知道为什么吗?
使用flyway-core:4.1.2进行数据库迁移。 添加了一个新的DDL文件供flyway执行。Flyway会正确执行DDL并对表和列进行相应的更改。(我们在新的DDL中添加了一个表并更改了以前的一些列)。 但是,flyway无法将此尝试注册到schema_version表:我得到以下错误: 架构[dbo]的当前版本:2.1 无法在元数据表[dbo]中插入版本“3.0”的行。[schema_v
我通过https://code.Quarkus.io引导了一个普通的Quarkus应用程序,生成的代码没有在我的Mac上成功构建docker映像。 执行时 顺便说一句:使用GraalVM的本机映像已成功生成 有什么想法吗?