3

ここで RESTEasy 2.3.0.GA を実行していますが、https: //stackoverflow.com/questions/18219237/jax-rs-path-regex-fails-for-just-one-of-an- or-expressionと、特定の URI が自分のハンドラーにマップされていないと思う理由を RESTEasy で確認する方法がわかりません。RESTEasy がそのディスパッチを明らかにするためにクランクアップできるデバッグ レベルはありますか?

4

2 に答える 2

0

これは私のために働いた:

@Provider
@ServerInterceptor
public class LoggingInterceptor implements ContainerRequestFilter {

    private static final ObjectMapper MAPPER = new ObjectMapper();

    @Override
    public void filter(ContainerRequestContext containerRequestContext) throws IOException {
        if (REQUESTS_LOGGER.isDebugEnabled()) {
            final String method = containerRequestContext.getMethod();
            final String url = containerRequestContext.getUriInfo().getRequestUri().toString();
            final StringBuilder headersStr = new StringBuilder();
            MultivaluedMap<String, String> headers = containerRequestContext.getHeaders();
            for (MultivaluedMap.Entry<String, List<String>> header : headers.entrySet()) {
                headersStr.append(header.getKey()).append(": ").append(header.getValue()).append('\n');
            }
            String json = null;
            if ("POST".equals(method) || "PUT".equals(method)) {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                IOUtils.copy(containerRequestContext.getEntityStream(), baos);
                byte[] jsonBytes = baos.toByteArray();
                json = new String(jsonBytes, "UTF-8");
                Object jsonObject = MAPPER.readValue(json, Object.class);
                json = MAPPER.writeValueAsString(jsonObject);
                containerRequestContext.setEntityStream(new ByteArrayInputStream(jsonBytes));
            }
            REQUESTS_LOGGER.restCall(method, url, headersStr.toString(), json == null ? "empty" : json);
        }
    }
}
于 2015-08-01T08:23:06.020 に答える