нет объявления с использованием чванства на майке 2 с гризли

У меня есть настройка swagger на jersey 2 и grizzly (без web.xml). Я могу получить доступ к странице swagger, но мои ресурсы API не отображаются. Страница Swagger, на которую я ссылаюсь, видна ниже

Мой основной файл виден ниже

`    
package com.beraben.jersey.test;

import com.wordnik.swagger.jaxrs.config.BeanConfig;
import java.net.URI;
import org.glassfish.grizzly.http.server.CLStaticHttpHandler;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;

/**
 *
 * @author Evan
 */
public class jerseyTestMain {

    /**
     * @param args the command line arguments
     */
    public static final String BASE_URI = "http://localhost:8080/myapp/";

    public static HttpServer startServer() {
        // create a resource config that scans for JAX-RS resources and providers
        // in com.example.rest package
        final ResourceConfig rc = new ResourceConfig().packages("com.beraben.jersey.test", "com.wordnik.swagger.jersey.listing");

        BeanConfig config = new BeanConfig();
        config.setResourcePackage("com.beraben.jersey.test");
        config.setVersion("1.0.0");
        config.setScan(true);

        // create and start a new instance of grizzly http server
        // exposing the Jersey application at BASE_URI
        return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
    }

    public static void main(String[] args) throws InterruptedException {
        final HttpServer server = startServer();

        CLStaticHttpHandler staticHttpHandler = new CLStaticHttpHandler(jerseyTestMain.class.getClassLoader(), "swagger-ui/");
        server.getServerConfiguration().addHttpHandler(staticHttpHandler, "/docs");

        Object syncObj = new Object();
        synchronized (syncObj) {
            syncObj.wait();
        }

    }

}    
`

У меня также есть настройка API, показанная ниже

   package com.beraben.jersey.test;

import com.wordnik.swagger.annotations.Api;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
 *
 * @author Evan
 */
@Path("myresource")
@Api(value = "/myresource")
public class MyResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt(){
        return "Got it!";
    }
}

У меня нет проблем с использованием API, который он возвращает правильно.

Но по какой-то причине я не могу показать подробности вызовов API. Есть ли что-то, что мне нужно сделать, чтобы показать подробности о существующем API в моем коде?

Мои статические файлы скопированы из примера проекта jersey2-grizzly2-swagger-demo

Также для справки, вот мой файл pom (незначительное отличие от демонстрационного проекта в том, что я не использую dependencyManagment для получения jersey-bom, вместо этого я ссылаюсь на него напрямую).

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.beraben</groupId>
    <artifactId>jersey-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.archetypes</groupId>
            <artifactId>jersey-quickstart-grizzly2</artifactId>
            <version>2.22.2</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>2.22.2</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-grizzly2-http</artifactId>
            <version>2.22.2</version>
        </dependency>
        <dependency>
            <groupId>com.wordnik</groupId>
            <artifactId>swagger-jersey-jaxrs_2.10</artifactId>
            <version>1.3.13</version>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

person Beraben Systems    schedule 04.05.2017    source источник


Ответы (1)


Посмотрев на формы Google, оказалось, что отдельная версия swagger на самом деле не работает.

Я создал отдельное веб-приложение maven и добавил свой проект jersey в качестве зависимостей. Это сработало после того, как поигрались с версией чванства, которая соответствовала версии джерси, которую я использовал.

person Beraben Systems    schedule 04.06.2017