我开发了一个使用 graphql 框架和 spqr 的应用程序,下面给出了依赖项。我的 spring 启动应用程序有一个上下文路径,比如 server.servlet-path=/asdfg
<dependency>
<groupId>io.leangen.graphql</groupId>
<artifactId>spqr</artifactId>
<version>0.9.7</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>4.2.0<</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>4.2.0<</version>
</dependency>
该应用程序是一个Java / Spring Boot应用程序,其中我的endpoint是一个person query——如下所示
@Component
public class PersonQuery {
@GraphQLQuery(name = "getPersons")
public List<Person> getFirstNPersons(@GraphQLArgument(name = "count") int count){
List<Person> result = new ArrayList<>();
...
return result.stream().limit(count).collect(Collectors.toList());
}
}
现在,在应用程序启动时,我加载personQuery,然后html" target="_blank">构建Schema。(我使用spqr,没有带有类型定义的.grapqls文件,但它们是按上面的方式注释的)带有@RestController类。
@RestController
public class GraphQLController {
private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLController.class);
private final GraphQL graphQL;
@Autowired
public GraphQLController(PersonQuery personQuery) {
// Schema generated from query classes
GraphQLSchema schema = new GraphQLSchemaGenerator().withResolverBuilders(
// Resolve by annotations
new AnnotatedResolverBuilder(),
// Resolve public methods inside root package
new PublicResolverBuilder("com.xyz.asd.services"))
// Query Resolvers
.withOperationsFromSingleton(personQuery)
.withValueMapperFactory(new JacksonValueMapperFactory()).generate();
graphQL = GraphQL.newGraphQL(schema).build();
}
@PostMapping(value = "/graphql", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public Map<String, Object> indexFromAnnotated(@RequestBody Map<String, String> request, HttpServletRequest raw) {
ExecutionResult executionResult = graphQL.execute(ExecutionInput.newExecutionInput().query(request.get("query"))
.operationName(request.get("operationName")).context(raw).build());
return executionResult.toSpecification();
}
上面的代码足以调出 http://localhost:8080/asdfg/graphiql 其中“asdfg”是我的应用程序上下文路径。但是在 graphIQL UI 中,我看不到文档下的架构,因为它通常显示。我发现的原因是,尽管 graphIQL UI 使用 /graphql 进行 POST 调用,但它并没有在路径上添加上下文。这是 POST http://localhost:8080/graphql 而不是 POST http://localhost:8080/asdfg/graphql。
如果我从spring应用程序中删除上下文路径,那么该应用程序运行良好。有没有方法可以在POST中包含上下文路径http://localhost:8080/graphql呼叫
也许你应该更改你的*.
文件?
mapping: /graphql --> mapping: /graphql
发件人:
graphql:
servlet:
mapping: /graphql
致:
graphql:
servlet:
mapping: /asdfg/graphql
我正在尝试找到一种方法来显式指定部署到Glassfish的Web应用程序的上下文路径3.1.2.2但到目前为止我还没有运气。有人能对此提供指导吗?背景如下: 我有一个Web应用程序,它由两个单独的Netbean(7.0)项目组成。第一个是Web服务,称为FOWS。第二个是使用FOWS网络服务的面向用户的Web应用程序。它被称为FooApp。 我最近将glassfish升级到3.1.2.2,希望解决
问题内容: 当我尝试运行weblogic服务器12c时,它抛出此错误并且无法启动。 发生此错误后,服务器此时挂起 并且在此行之后无法启动,请帮助解决该错误。 问题答案: 停止weblogic服务器 从weblogic的’autodeploy’文件夹中删除所有war文件。 然后再次启动weblogic服务器 之后,在浏览器中输入URL“ http:// localhost:7001 / consol
我已经通过安装插件准备了我的第一个vaadin应用程序,并创建了vaadin项目。构建成功并部署到wildFly后,尝试使用下面的localhost:port/myapp/和localhost:port//myapp/myuiservlet运行应用程序时也不起作用
我已经使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包生成了一个Spring Boot web应用程序。 使用的技术: Spring启动2.0.0。M6,Java8, Maven 这是我的安全配置 在我的 但当我在http://localhost:1234/iberiaWebUtils,而不是去http://localhost:1234/ibe
我们正在为我们的web应用程序使用spring boot。上下文根在WEB-INF/classes/common.properties中定义,如下所示。 Spring boot版本=1.5.2 Tomcat版本=8.0.53
我是Spring MVC的新手。尝试使用安全登录构建项目,但无法在tomcat中启动. war。 失败-无法启动上下文路径/员工处的应用程序 我检查了libraris的复制品,如us log4j和slf4j 请帮我理解原因,提前谢谢。 pom。xml TOMCATlocalhost日志显示: 此类用于控制对Mysql的查询 这是我的申请表ontext.xml