gpt4 book ai didi

java - 在 Quarkus 应用程序中注入(inject) ServletContext

转载 作者:行者123 更新时间:2023-12-02 01:28:15 26 4
gpt4 key购买 nike

玩弄 Quarkus ,我正在尝试获取 ServletContext注入(inject)我的应用程序中:

@Controller
@Path("/greeting/")
@RequestScoped
public class GreetingResource {
@Inject
ServletContext servletContext;
}

它编译得很好,但在打包阶段 quarkus-maven-plugin 失败了:

[1] Unsatisfied dependency for type javax.servlet.ServletContext and qualifiers [@Default]
- java member: exampleapp.GreetingResource#servletContext
- declared on CLASS bean [types=[java.lang.Object, exampleapp.GreetingResource], qualifiers=[@Default, @Any], target=exampleapp.GreetingResource]

我的应用程序依赖于 io.quarkus:quarkus-resteasy,它会引入 io.quarkus:quarkus-undertow,而后者又会引入 io.undertow:undertow-servlet.

我希望任何 Undertow 扩展都能提供 ServletContext 的注入(inject),但显然我的假设是错误的......有什么想法吗?

最佳答案

@Inject ServletContext 仅适用于 Java EE 环境。 Quarkus 集成了 JAX-RS,因此您可以使用 JAX-RS @Context

访问 ServletContext 实例
@Controller
@Path("/greeting/")
@RequestScoped
public class GreetingResource {

// javax.ws.rs.core.Context
@Context
ServletContext servletContext;

// OR

@GET
@Path("/test")
@Produces({ MediaType.TEXT_PLAIN })
public Response test(@Context ServletContext servletContext) {
// return ...
}
}

您的方法也有效,但它明确依赖于 Undertow API。

更新:

Quarkus 版本 0.17.0+ 添加了使用 CDI @Inject 注释对 ServletContext 注入(inject)的支持。看这个https://github.com/quarkusio/quarkus/pull/2850

关于java - 在 Quarkus 应用程序中注入(inject) ServletContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56531759/

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