홈>
애플리케이션 초기화 메소드 내부의 기본 AssetBundle 인 dropwizard에서 정적 자산을 제공하고 있습니다. 1.3 정적 자산을 제공하는 DW .
bootstrap.addBundle(new AssetsBundle("/assets/", "/assets"));
정적 자산은
src/main/resources/assets/
에 있습니다.
지금은 단지
.html
가 있습니다
localhost:port/assets/index.html
에서 제공하고 싶은 파일
.
localhost:port/assets/index.html
에 갈 때
이상한
jetty-server
를 받고있는 것 같습니다
오류.
org.eclipse.jetty.util.SharedBlockingCallback: Blocker not complete Blocker@6aa2d91b{null}
WARN [2018-05-02 19:10:32,492] org.eclipse.jetty.servlet.ServletHandler: Error for /assets/MultiFileUpload.html
! java.lang.ClassNotFoundException: org.eclipse.jetty.http.GzipHttpContent
! at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
! at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
! at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
! at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
! ... 43 common frames omitted
! Causing: java.lang.NoClassDefFoundError: org/eclipse/jetty/http/GzipHttpContent
! at org.eclipse.jetty.server.handler.gzip.GzipHttpOutputInterceptor.commit(GzipHttpOutputInterceptor.java:229)
! at org.eclipse.jetty.server.handler.gzip.GzipHttpOutputInterceptor.write(GzipHttpOutputInterceptor.java:104)
! at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:235)
! at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:219)
! at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:269)
! at io.dropwizard.servlets.assets.AssetServlet.doGet(AssetServlet.java:197)
! at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
! at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
! at io.dropwizard.jetty.NonblockingServletHolder.handle(NonblockingServletHolder.java:49)
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)
! at io.dropwizard.servlets.ThreadNameFilter.doFilter(ThreadNameFilter.java:35)
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
! at io.dropwizard.jersey.filter.AllowedMethodsFilter.handle(AllowedMethodsFilter.java:45)
! at io.dropwizard.jersey.filter.AllowedMethodsFilter.doFilter(AllowedMethodsFilter.java:39)
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
! at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
! at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
! at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
! at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
! at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
! at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:239)
! at io.dropwizard.jetty.RoutingHandler.handle(RoutingHandler.java:52)
! at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:493)
! at io.dropwizard.jetty.BiDiGzipHandler.handle(BiDiGzipHandler.java:69)
! at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)
! at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)
! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
! at org.eclipse.jetty.server.Server.handle(Server.java:534)
! at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
! at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
! at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
! at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
! at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:240)
! at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
! at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
! at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
! at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
! at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
! at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
! at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
! at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
! at java.lang.Thread.run(Thread.java:745)
0:0:0:0:0:0:0:1 - - [02/May/2018:19:10:32 +0000] "GET /assets/index.html HTTP/1.1" 500 265 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" 27
여기를 읽었습니다 DropwizardViews 를 사용하는 것이 더 좋습니다. 그럼에도 불구하고 부두에서 오류를 일으키는 gziphttpContent 클래스의 문제가 무엇인지 잘 모르겠습니다.
-
답변 # 1
관련 자료
- c# - NET 5 예외 발생 콘텐츠 스트림 오류
- javascript - 상자의 내용을 스크롤 할 때 배경 요소는 정적입니다
- node.js - next/폴더 아래에 정적 파일을 제공하지만 다른 URL 위치
- json - 406 오류가 발생했습니다 입력 종료 오류로 인해 매핑 할 콘텐츠가 없습니다
- .net - 씨# - 콘텐츠를 스트림에 복사하는 동안 오류가 발생했습니다(비동기 http 요청)
- reactjs - SWAPI (Star Wars API)를 사용하는 React 프로젝트의 혼합 콘텐츠 오류
- next.js - nextjs 기본 서버에서 제공되는 정적 파일을위한 캐시 제어 헤더 설정
- c++ - 정적 변수를 반환하면 Visual Studio에서 오류가 발생합니다
- php - htaccess 단일 페이지 항목이 정적 파일을 제공하지 않음
관련 질문
- java - 봄 부팅에서 JSON을 구문 분석 할 수 없습니다
- java - ControllerAdvice, ExceptionHandler 및 RestController에서 catch 블록 시도
- java - Spring RESTful 웹 서비스 문제
- java - 하위 클래스가 여러 개인 경우 Restful 서비스 요청을 설계하는 방법은 무엇입니까?
- java - Spring Boot Rest API는 Lombok과 함께 사용되는 빈 JSON을 반환합니다
- java - API 시작시 DB에 도메인 개체를 삽입하는 방법
- java - Spring Boot는 REST 컨트롤러에 액세스 할 수 없습니다
- Java를 사용하여 JSON 값을 업데이트하는 방법
명예에 대한 뻔뻔한 입찰에서 답변에 댓글 스레드 요약 :)
Gzip은 HTTP 요청에 사용되는 인코딩 전략입니다. 브라우저가
Accept-Encoding: gzip
를 추가하고있을 가능성이 큽니다. 요청 헤더. 어떤 이유로 든 dropwizard는 응답 내용을 압축 할 수 없으며 이것이 게시 한 스택 추적입니다.브라우저에서이 헤더를 추가하고 있는지 확인할 수 있습니다.
curl -vk https://localhost:<port>/assets/index.html
같은 요청을하고 같은 예외가 있는지 확인하십시오. 그렇지 않은 경우 브라우저에서 zip으로 압축 된 콘텐츠를 요청하고있을 수 있으며 이는 드롭 위저드에서 제공 할 수 없습니다. 결정을 내리기 위해 Wireshark 또는 Charles Proxy와 같은 스니핑 도구를 사용하여 브라우저가 수행하는 전체 HTTP 요청을 검사 할 수 있습니다.
해결책으로 dropwizard 서버 설정에서 gzip을 비활성화 할 수 있습니다 :
최적의 솔루션 일 필요는 없지만 트릭을 수행해야합니다. 근본 원인이 dropwizard의 버그인지 아니면 gzip 구성과 관련이 있는지 모르겠습니다.