При использовании встроенного сервера Jetty openapi.json не обслуживается после перехода с Jetty 10 на Jetty 12.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 При использовании встроенного сервера Jetty openapi.json не обслуживается после перехода с Jetty 10 на Jetty 12.

Сообщение Anonymous »

Я запускаю приложение Java, используя встроенный сервер Jetty и JAX-RS. Конечные точки аннотируются с помощью swagger v3. У меня также есть требование обслуживать openapi.json по пути «swagger.json», поэтому для этого я добавил адаптированную версию io.swagger.v3.jaxrs2.integration.resources.OpenApiResource. Все это отлично работает с использованием Jetty 10.
Я пытаюсь перенести приложение с Jetty 10.0.20 на Jetty 12.0.12, я могу получить доступ к странице swagger js, но файл openapi.json, созданный из конечных точек, не работает. доступно, на странице Swagger js возникают ошибки с сообщением «Не удалось загрузить определение API».
Ошибка выборки
Не найдено /cva/api/openapi.json
Вот код инициализации сервера:

Код: Выделить всё

CvaServer(String contextPath, int port) throws Exception {

server = new Server(port);

ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.packages("io.swagger.v3.jaxrs2.integration.resources",
"org.gel.cva.server.rest",
"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);

ServletContextHandler servletContextHandler = new ServletContextHandler();
servletContextHandler.setContextPath(contextPath);

servletContextHandler.addServlet(new ServletHolder(new ServletContainer(resourceConfig)), "/api/*");
servletContextHandler.addEventListener(new CvaContextListener());

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)
);

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("*"));

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"));

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);

ServerConnector serverConnector = new ServerConnector(
server,
new HttpConnectionFactory(),
new HTTP2CServerConnectionFactory(new HttpConfiguration())
);
serverConnector.setPort(port);
server.setConnectors(new ServerConnector[]{serverConnector});
}
Я ожидал, что openapi.json по-прежнему будет обслуживаться и страница Swagger не сломается

Подробнее здесь: https://stackoverflow.com/questions/791 ... grating-fr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»