При использовании встроенного сервера 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
Точный запрос, который делается к приложению, — это запрос 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});
}
Я ожидал, что openapi.json по-прежнему будет обслуживаться и страница Swagger не сломается

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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