为什么Swagger + RESTEasy不能使用@ApplicationPath("")

时间:2014-12-13 21:52:43

标签: java jboss7.x resteasy swagger

环境= JBoss 7.2.0.Final + RESTEasy 2.3.5.Final + Swagger 1.3.10

尝试设置没有web.xml的WAR并使用Swagger。如果ApplicationPath

中有任何值,它就可以工作
@javax.ws.rs.ApplicationPath("test")

@WebServlet(name = "RestEasy-1", loadOnStartup = 1)

@Path("/message")
@Api(value="/message",description="hello api")

适用于网址

http://localhost:8080/RestEasy-1/test/message/xyz (THE SERVICE)
http://localhost:8080/RestEasy-1/test/api-docs (SHOWS SWAGGER JSON)
http://localhost:8080/RestEasy-1/ (RUNS SWAGGER UI)

但是,如果我改为:

@javax.ws.rs.ApplicationPath("") (also tried /* or * or /)

服务和api-docs工作,但Swagger似乎不可用。

我想这是与servlet根目录上的侦听器的冲突,但我有一个预先存在的约束,即服务在root + path运行,所以我需要一个空白的ApplicationPath。

是否可以将Swagger设置为手动运行其他路径?

2 个答案:

答案 0 :(得分:1)

问题在于您尝试从同一资源根提供应用程序和静态上下文,并且背后存在一些技术问题。

我相信这个问题 - JAX-RS Application on the root context - how can it be done? - 指的是同一个问题,并包含对该问题的广泛解决方案。

答案 1 :(得分:1)

虽然您无法使用@ApplicationPath注释,但您可以使用初始化参数设置应用程序路径:

#vz {
    //This:
    visibility: hidden;
    //Or this:
    display: none;
}

请参阅:http://robferguson.org/2016/12/11/resteasy-embedded-jetty-fat-jars-swagger-and-swagger-ui/

并且:https://github.com/Robinyo/resteasy/tree/master/examples/fatjar-swagger