Search code examples
swagger-uiopenapiapache-tomeemicroprofile

Strange issue with TomEE 8.0.4 and OpenApi extension (Swagger-UI 1.0.3)


I'm using TomEE microprofile and have defined my rest application path this way:

 @ApplicationPath("api")
 public class RestConfiguration extends Application {

 }

When the application is deployed, tomee log shows the access url to the generated front end resources:

 Service URI: http://localhost:8080/api/openapi-ui/
 

When accesing the url got this message in the swagger-ui web page:

Fetch error undefined /openapi

If I change the application path to empty:

 @ApplicationPath("")

Then all works fine and swagger shows all of the service method definitions.

So, what should I do to make it work adding "api" to the ApplicationPath annotation?

Tried with "/api", but doesn't work either.


Solution

  • I made the test here with Tomee-8.0.4, follow the configurations, assumed that you that is using a JAR.

    in your pom.xml use the dependency:

        <dependency>
            <groupId>org.microprofile-ext.openapi-ext</groupId>
            <artifactId>openapi-ui</artifactId>
            <version>1.1.3</version>
        </dependency>
    
     <build>
            <finalName>tomee-demo</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomee.maven</groupId>
                    <artifactId>tomee-maven-plugin</artifactId>
                    <version>${tomee.version}</version>
                    <executions>
                        <execution>
                            <id>executable-jar</id>
                            <phase>package</phase>
                            <goals>
                                <goal>exec</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <context>ROOT</context>
                        <tomeeClassifier>microprofile</tomeeClassifier>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    in microprofile-config.properties use:

    mp.openapi.servers=http://localhost:8080/api
    openapi.ui.yamlUrl=/api/openapi
    openapi.ui.serverVisibility=visible
    

    and run your project again.

    test performed

    reference: https://github.com/microprofile-extensions/openapi-ext/tree/master/openapi-ui