Jersey 2를 사용하여 기능을 노출했습니다 (restfull API). 여기서`ContainerRequestContext '에서 pathparam
, quaeryparam
에 액세스 한 방식으로 필터 수준에서 양식 매개 변수에 액세스하려고합니다.ContainerRequestContext에서 양식 데이터 매개 변수를 가져 오는 방법
필터 : -
public class SecurityFilter implements ContainerRequestFilter, ContainerResponseFilter
{
private ResourceInfo ResourceInfo;
// ignore this
public SecurityFilter(ResourceInfo ResourceInfo)
{
}
@Override
public void filter(ContainerRequestContext ctx) throws IOException
{
MultivaluedMap<String, String> pathparam = ctx.getUriInfo().getPathParameters();
MultivaluedMap<String, String> quaeryparam = ctx.getUriInfo().getQueryParameters();
// Here i want all form parameters
}
// ignore this
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException
{
}
}
그래서 위의 필터 ContainerRequestContext
에서 양식 매개 변수를 얻을 수있는 방법?
편집 : 폼 데이터를 얻을 수있는 하나 개의 방법이
이
((ContainerRequest) context).bufferEntity();
// Read entity
FormDataMultiPart multiPart = ((ContainerRequest) context).readEntity(FormDataMultiPart.class);
String myValue = multiPart.getField("foo").getValue();
입니다하지만 너무 Exceptionorg.glassfish.jersey.server.ContainerException: java.lang.OutOfMemoryError: Java heap space
예외가 발생 ((ContainerRequest) context).bufferEntity()
메모리에 개체가 포함되어 있으므로이 큰 파일에 대해 작동하지 않습니다 .
큰 엔터티의 경우 엔티티를 임시 파일에 수동으로 버퍼링 한 다음 엔티티 스트림을 대체하여 임시 파일에서 엔티티를 읽는 스트림을 가리켜 야합니다. 현재이 사용 사례에서이 유스 케이스에 대해 Jersey에는 다른 기성품 지원이 없습니다. 유감스럽게 생각합니다. –