首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Quarkus应用程序中注入ServletContext

在Quarkus应用程序中注入ServletContext
EN

Stack Overflow用户
提问于 2019-06-10 18:32:41
回答 2查看 3.2K关注 0票数 3

在玩夸库斯时,我试图在我的应用程序中注入ServletContext

代码语言:javascript
运行
复制
@Controller
@Path("/greeting/")
@RequestScoped
public class GreetingResource {
    @Inject
    ServletContext servletContext;
}

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

代码语言:javascript
运行
复制
[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.

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-10 20:08:20

@Inject ServletContext只工作于Java环境。Quarkus集成JAX-RS,以便您可以通过使用ServletContext JAX RS @Context来访问实例。

代码语言:javascript
运行
复制
@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 ...
    }
}

您的方式也是有效的,但是它显式地依赖于下面的API。

更新:

Quarkus 0.17.0+使用CDI @Inject注释增加了对ServletContext注入的支持。参见此https://github.com/quarkusio/quarkus/pull/2850

票数 4
EN

Stack Overflow用户

发布于 2019-06-10 19:43:09

一个小摆设告诉我,这种类型没有制作方法.下面的片段帮助了我:

代码语言:javascript
运行
复制
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Singleton;
import javax.servlet.ServletContext;

import io.undertow.servlet.handlers.ServletRequestContext;

@Singleton
public class ServletContextProducer {
    @Produces
    @RequestScoped
    public ServletContext servletContext() {
        return ServletRequestContext.current().getCurrentServletContext();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56531759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档