2016-08-08 12 views
0

Swagger2とSpringブートアプリケーションとの統合中にエラーが発生しました。私はこの実装に固執しています。実装や設定に問題がありますか?Swagger 2とSpringブートアプリケーションとの統合

以下は、Swagger2を統合するために行った設定です。

SwaggerConfig.java

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 

import springfox.documentation.builders.PathSelectors; 
import springfox.documentation.builders.RequestHandlerSelectors; 
import springfox.documentation.service.ApiInfo; 
import springfox.documentation.spi.DocumentationType; 
import springfox.documentation.spring.web.plugins.Docket; 
import springfox.documentation.swagger2.annotations.EnableSwagger2; 

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 
    @Bean 
    public Docket api(){ 
     return new Docket(DocumentationType.SWAGGER_2) 
      .select() 
      .apis(RequestHandlerSelectors.any()) 
      .paths(PathSelectors.regex("/api/.*")) 
      .build() 
      .apiInfo(apiInfo()); 
    } 

    @SuppressWarnings("deprecation") 
    private ApiInfo apiInfo() { 
     ApiInfo apiInfo = new ApiInfo(
      "My Project's REST API", 
      "This is a description of your API.", 
      "API TOS", 
      "[email protected]", 
      "API License", 
      "API License URL", null 
     ); 
     return apiInfo; 
    } 
} 

のpom.xml追加さswagger2

<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger2</artifactId> 
    <version>2.5.0</version> 
</dependency> 
<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger-ui</artifactId> 
    <version>2.5.0</version> 
</dependency> 

application.propertiesの依存性を必要

server.port=10080 
server.contextPath=/approot 

------------------Hibernate Datasource configuration------------------ 
spring.datasource.url=${.service.jdbc.url} 
spring.datasource.username=${service.jdbc.username} 
spring.datasource.password=${service.jdbc.password} 
spring.datasource.driver-class-name=${service.jdbc.driver} 

spring.jpa.hibernate.ddl-auto: update 
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy 
spring.jpa.show-sql: false 

------------------Tomcat Access logs------------------ 
server.tomcat.accessLogEnabled=true 
server.tomcat.accessLogPattern=%t responseTime=%D remoteHost=%h %l thread=%I %u method=%m uri=%U status=%s bytes=%b 
server.tomcat.basedir=/var/log/tomcat-access 

error.whitelabel.enabled=false 

URL http://localhost:10080/approot/swagger-ui.htmlにアクセスしようとすると、以下のエラーが表示され、ウェブページに何も表示されません。

Aug 08, 2016 11:48:05 AM org.apache.catalina.core.ApplicationDispatcher invoke 
SEVERE: Servlet.service() for servlet dispatcherServlet threw exception 
javax.servlet.ServletException: Circular view path [error]: would dispatch back to the current handler URL [/approot/error] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 
    at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:205) 
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:145) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:468) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) 
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:433) 
    at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:299) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:176) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

Aug 08, 2016 11:48:05 AM org.apache.catalina.core.StandardHostValve custom 
SEVERE: Exception Processing ErrorPage[errorCode=0, location=/error] 
javax.servlet.ServletException: Circular view path [error]: would dispatch back to the current handler URL [/approot/error] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 
    at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:205) 
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:145) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:468) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) 
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:433) 
    at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:299) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:176) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 
+0

あなたはエラーがありますが、Springのエラー処理を設定した方法によって実際のエラーは表示されません。あなたのウェブアプリケーションの設定に加えて、エラー処理に関する何かを投稿してください。 –

+0

私は 'error.whitelabel.enabled = false'をapplication.propertiesにコメントしました。今、バックエンドにエラーはありません。しかし、私はwhitelabelエラーページを取得しています。 ホワイトリストエラーページ このアプリケーションには/ errorの明示的なマッピングがないため、これをフォールバックとみなしています。 Mon Aug 08 12:32:55 BST 2016 予期しないエラーが発生しました(type = Not Found、status = 404)。 メッセージがありません –

答えて

2

最終的にこの問題の解決策が見つかりました。 Swagger UIは独自のUI関連モジュールをjarファイルに追加します。スワッガーUIを表示したい場合は、アプリケーションに@EnableWebMvcはありません。 ExceptionHandlerの1つにこのアノテーションがありました。そのため、Swagger UIにアクセスしようとするとエラーが発生していました。

ブログをintegration of Swagger with spring boot applicationに投稿しました。

関連する問題