Я пытаюсь перенести приложение с Jetty 10.0.20 на Jetty 12.0.12, я могу получить доступ к странице swagger js, но файл openapi.json, созданный из конечных точек, не работает. доступно, на странице Swagger js возникают ошибки с сообщением «Не удалось загрузить определение API».
Ошибка выборки
Не найдено /cva/api/openapi.json
Точный запрос, который делается к приложению, — это запрос GET по пути /cva/api/openapi.json, который возвращает ответ 404.
Моя проблема в том, что страница пользовательского интерфейса Swagger больше не работает.
Вот код инициализации сервера:
Код: Выделить всё
// called like this new CvaServer("/cva", getPort()).run()
CvaServer(String contextPath, int port) throws Exception {
server = new Server(port);
// Set up resource config
ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.packages("io.swagger.v3.jaxrs2.integration.resources",
"org.gel.cva.server.rest", // This is the package name for my APIs
"org.gel.cva.server.exceptionmapper",
"com.jersey.jaxb",
"com.fasterxml.jackson.jaxrs.json");
resourceConfig.register(MultiPartFeature.class);
resourceConfig.register(RolesAllowedDynamicFeature.class);
resourceConfig.register(AuthenticatingRequestFilter.class);
resourceConfig.register(AuditLoggingFilter.class);
resourceConfig.register(StringNormalisationConverterProvider.class);
resourceConfig.register(EntityFilteringFeature.class);
resourceConfig.register(AuthMethodFilter.class);
EncodingFilter.enableFor(resourceConfig, GZipEncoder.class);
// Set up ServletContextHandler
ServletContextHandler servletContextHandler = new ServletContextHandler();
servletContextHandler.setContextPath(contextPath);
servletContextHandler.addServlet(new ServletHolder(new ServletContainer(resourceConfig)), "/api/*");
servletContextHandler.addEventListener(new CvaContextListener());
// Set up ResourceHandler
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setWelcomeMode(ResourceService.WelcomeMode.REDIRECT);
servletContextHandler.setContextPath("/");
servletContextHandler.setWelcomeFiles(new String[] { "index.html" });
servletContextHandler.setBaseResource(
ResourceFactory.of(resourceHandler).newClassLoaderResource("static", true)
);
// Set up CrossOriginHandler
CrossOriginHandler crossOriginHandler = new CrossOriginHandler();
crossOriginHandler.setAllowedOriginPatterns(Set.of("*"));
crossOriginHandler.setAllowedMethods(Set.of("GET","POST","PUT","DELETE","OPTIONS","HEAD"));
crossOriginHandler.setAllowCredentials(true);
crossOriginHandler.setAllowedHeaders(Set.of("*"));
// Set up OpenAPI models
OpenAPI oas = new OpenAPI();
oas.setServers(List.of(new io.swagger.v3.oas.models.servers.Server().url("/cva/api")));
Info info = new Info()
.title("title")
.description("")
.version(CvaConfiguration.CVA_VERSION);
oas.info(info);
SwaggerConfiguration oasConfig = new SwaggerConfiguration()
.openAPI(oas)
.prettyPrint(true)
.resourcePackages(Set.of("org.gel.cva.server.rest"));
// Set up JaxrsOpenApiContextBuilder
try {
new JaxrsOpenApiContextBuilder()
.application(resourceConfig)
.openApiConfiguration(oasConfig)
.buildContext(true)
.read();
} catch (OpenApiConfigurationException e) {
throw new RuntimeException(e.getMessage(), e);
}
crossOriginHandler.setHandler(servletContextHandler);
servletContextHandler.addServlet(new ServletHolder(new DefaultServlet()), "/*");
server.setHandler(servletContextHandler);
// Set up Connectors
ServerConnector serverConnector = new ServerConnector(
server,
new HttpConnectionFactory(),
new HTTP2CServerConnectionFactory(new HttpConfiguration())
);
serverConnector.setPort(port);
server.setConnectors(new ServerConnector[]{serverConnector});
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... grating-fr