2013-07-25 2 views
1
관련

실패 : 나는 큰 URI를 처리 할 수 ​​있어야합니다 (연구 목적으로 만 해당 저지/회색) 포스트 웹 서비스를 개발하고 있어요 thisthat뉴저지/그리즐리 POST 큰 URI

. 그러나 URI가 8000자를 초과하는 경우 추가 설명이없는 400 개의 잘못된 요청 예외가 발생합니다. 그리즐리 maxHttpHeaderSize 속성으로 디버깅/추적했습니다. 이 속성을 설정하려고했지만 실패했습니다. 다음은 서버와 요청을 시작하는 방법입니다.

GrizzlyServerFactory.createHttpServer(BASE_URI, new PackagesResourceConfig("org.test")); 

JSONObject s = new JSONObject(webResource.queryParams(queryParams).post(String.class)); 

감사합니다. 건배, 다니엘

답변

2

문제는 GrizzlyServerFactory가 이미 HttpServer를 시작 했으므로 즉석에서 재구성 할 수 없다는 것입니다. 도움이 될 것입니다

HttpServer httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc); 
    httpServer.getListener("grizzly").setMaxHttpHeaderSize(Integer.MAX_VALUE); 

    // don't forget to start the server explicitly 
    httpServer.start(); 

희망 : 다음은 [1] 나는 HttpServer에 시작하지 않는 GrizzlyServerFactory의 사본과 같이 코드를 만들었습니다.

[1] https://github.com/oleksiys/samples/blob/master/jersey-grizzly2-ext/src/main/java/com/sun/jersey/api/container/grizzly2/ext/GrizzlyServerFactory.java

+0

굉장! 고맙습니다. 하지만 지금 내 수업을 만들지 않고 이것을 할 수있는 방법이 있습니까? (이건 업데이트가 아니기 때문에) ( –

+0

안녕하세요 Daniel, 걱정 되긴했지만 안타깝게도 지금은 다른 방법이 없습니다. 저지 문제를 신고하고 Jersey 사람들에게 표준 GrizzlyServerFactory 기능을 확장하도록 요청할 수 있습니다. – alexey

0

Have 짧은 URI로 시도 했습니까? 서버가 너무 긴 URI를 처리 할 수 ​​없습니다.

당신은 여기에 대한 자세한 내용을보실 수 있습니다 : What is the maximum length of a URL in different browsers?

왜 당신은 몸을 요청하는 URL에서 요청 데이터를 입력하지?

+0

죄송하지만 이것은 도움이되지 않습니다. 나는 브라우저를 사용하지 않는다. 그리고 저는 저지가 원하는 것 같은 웹 서비스 만 부를 수 있습니다. –

+0

하지만 서버가 너무 긴 URI를 처리하지 못할 가능성이 여전히 있습니다. 더 짧은 URI로 시도해보고 피드백을주십시오. 제공된 링크의 서버 (최대 URI 크기)에 대한 지침도 있습니다. – pWoz

0

이제

public static HttpServer createHttpServer(
    final URI uri, 
    final ResourceConfig configuration, 
    final boolean start) 

그것을 시작하지 않고 회색 http 서버를 만들 수 있습니다 그래서 기본적으로 당신이 일반적으로 3 인자로 거짓 통과 만듭니다.

HttpServer 개체를 다시 가져올 때 httpServer.getListener("grizzly").setMaxHttpHeaderSize(Integer.MAX_VALUE); 이전에 말했던 것처럼 수동으로 서버를 시작하는 것을 잊지 마십시오.