gpt4 book ai didi

java - 在 Tomcat 中注册 SimpleGraphQLServlet

转载 作者:行者123 更新时间:2023-11-30 06:46:03 25 4
gpt4 key购买 nike

我正在尝试使用 graphql-spqr 将 GraphQLServlet 添加到我现有的网络服务中.

我已经添加了正确的注解,现在只需要设置 GraphQL 端点,这正是我苦苦挣扎的地方。我发现的所有教程和谷歌搜索结果都指的是类 graphql.servlet.SimpleGraphQLServlet 的弃用构造函数

我可以像这样创建一个 servlet 对象:

UserService userService = new UserService();
GraphQLSchema schema = new GraphQLSchemaGenerator()
.withOperationsFromSingleton(userService)
.generate();

graphql.servlet.GraphQLServlet servlet = new Builder(schema).build();

但我不知道是否以及如何注册一个 servlet 实例。搜索引擎要么误解我的搜索,要么一无所获。

非常感谢您的指点。

最佳答案

使用 Servlet 3+,您可以动态注册 servlet。这就是我出于完全相同的原因所做的(我不想使用已弃用的构造函数)。

@WebListener
public class GraphQLServletRegistrationServletContextListener implements ServletContextListener {

private GraphQLSchema schema;

public GraphQLServletRegistrationServletContextListener() {}

@Inject
public GraphQLServletRegistrationServletContextListener(final GraphQLSchema schema) {
this.schema = schema;
}

@Override
public void contextInitialized(final ServletContextEvent event) {
final ServletRegistration.Dynamic dynamicGraphQLServlet
= event.getServletContext().addServlet("GraphQLEndpoint", SimpleGraphQLServlet.create(schema));
dynamicGraphQLServlet.addMapping("/graphql");
}

@Override
public void contextDestroyed(final ServletContextEvent event) {}

}

我正在使用 CDI 注入(inject) GraphQLSchema,但您可以忽略它并以任何您喜欢的方式手动构建它。

关于java - 在 Tomcat 中注册 SimpleGraphQLServlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48053914/

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