我正在Jetty 9.0.4中运行Jersey 2.2 Servlet,以便提供REST请求.

大多数情况下,一切都很好,请求得到满足,但从未见过泽西班的任何日志.我找不到任何doco,表明我需要牺牲什么鸡,以使泽西2.2发生

所以我的第一个问题是 – 我需要做些什么来让泽西生成一些日志.

当请求确实运行不正常(例如,因为Json请求体不能被解析)Jersey将抛出一个ContainerException,其消息就像“不能反序列化从//OBJECT令牌中的java.util.ArrayList的实例”等等.在这一点上真的可以记录传入的请求正文,以便我可以检查Json.再次,在目前的doco中找不到任何东西,概述了这样的一个野兽,虽然我确信有一个.在任何情况下,直到我解决上面的问题1它是愚蠢的.

所以我的第二个问题是如何记录传入的请求正文(不中断请求).

web.xml中的Jersey Servlet配置如下所示:

<servlet >
    <servlet-name>Jersey Servlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>au.com.xandar.wirelesstiming.recorder.web.rest.JerseyApplication</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我的泽西应用是:

public final class JerseyApplication extends ResourceConfig {

    public JerseyApplication() {
        super(
            //JacksonFeature.class   // Switching on Jackson
            // (My) JerseyLoggingFilter.class       // Log requests using Jersey ContainerRequestFilter 
            MyApplicationEventListener.class        // Log Requests using Jersey RequestEventListener
        );
        packages("au.com.xandar.wirelesstiming.recorder");

        // Enable LoggingFilter & output entity.
        // NB This does NOT generate any log.
        registerInstances(new LoggingFilter(Logger.getLogger(JerseyApplication.class.getName()),true));
    }
}

解决方法

泽西本身不会记录太多.对于2.x,我们正在开发一种开发模式,其中包括跟踪支持(见 Tracing in Jersey),默认记录传入请求/传出响应(包括实体主体和跟踪消息).这个功能应该很快就会出来.

关于您的第二个问题 – 您可以注册能够记录传入请求/传出响应(方法,标题,..)以及实体主体(配置时)的LoggingFilter.您可以通过配置(第三个选项说明如何打开实体日志记录):

web.xml(将其添加到JAX-RS servlet定义):

<init-param>
    <param-name>jersey.config.server.provider.classnames</param-name>
    <param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>

申请延期:

public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        return new HashSet<Class<?>>() {{
            // Add your resources.
            add(HelloWorldResource.class);

            // Add LoggingFilter.
            add(LoggingFilter.class);
        }};
    }
}

ResourceConfig实例(演示也在这里输出实体):

public class MyApplication extends ResourceConfig {

    public MyApplication() {
        // Resources - add your package name here to enable package scanning.
        packages(...);

        // Enable LoggingFilter & output entity.     
        registerInstances(new LoggingFilter(Logger.getLogger(MyApplication.class.getName()),true));
    }
}

如何获得Jersey 2.2(JAX-RS)生成日志输出,包括Json请求体的更多相关文章

  1. JAX-RS获取打开连接时间

    我正在使用JAX-RS进行HTTP请求。是否有方法获取打开连接所需的时间?打开连接和读取响应似乎对调用函数是隐藏的。

  2. xmlhttprequest – AngularJS和位于不同域中的Jersey Webservice之间的通信.无法访问正确的会话

    亲爱的stackoverflow读者,最近我一直在玩AngularJS和JavaEE6.我已经和泽西建立了一个webservice,并在Glassfish上部署了这个项目.因为我需要某种身份验证和OAuth实现,或者JDBCRealm似乎过度杀戮,所以我决定在用户成功登录后创建一个会话.这似乎工作正常,如果我发布到/从Postman或从部署在glassfish上的基本jQuery网页登录,我将获得

  3. java – 使用RolesAllowedDynamicFeature和Jersey授权

    我正在尝试使用JAX-RS过滤器对用户进行身份验证.这是我正在设置新SecurityContext的过滤器:资源方法如下所示:RolesAllowedDynamicFeature的注册方式如下:我可以在控制台上看到预期的输出.但是,如果我取消注释@RolesAllowed(“user”),我会收到Forbidden错误,并且永远不会调用SecurityContext的isUserInRole方法.

  4. 如何使用基于JAX-RS的Restlet自动将@DefaultValue映射到枚举参数?

    解决方法如果你有一个枚举像:然后,为了让JAX-RS知道要返回的实例,您的查询参数必须是?animal=MEDIUM_DOG.查询参数的值被送到枚举的valueOf静态方法以获取实例.当然,如果你发送像鸟一样的东西它将无法匹配任何东西,它将无法正常工作,因为@QueryParam期望这样:ThetypeToftheannotatedparameter,fieldorpropertymusteither:–Beaprimitivetype–Haveaconstructorthatacceptsasingle

  5. Angular SPA + Jersey + SpringMVC 整合应用

    原文排版地址:AngularSPA+Jersey+SpringMVC整合应用AngularSPA单页面应用和MVC控制器的整合,会有一个疑问,SPA中点击链接的跳转,是经过SPA的路由,还是直接被SpringMVC拦截了?

  6. java – Jersey客户端响应状态204

    我正在使用Jersey服务和客户端.当我试图调用该服务时,我收到此错误:我不懂为什么.这是服务:这是客户:我真的不知道问题可能是什么.我知道另一个问题,看似相同的主题,但他们不是.如果我遗漏了某些内容或者您需要任何额外信息,请告诉我.解决方法204是HTTP响应状态代码,通知客户端没有返回内容.当你的客户端调用get(JSONArray.class)时,它期望有200个数据,因此是例外.从服务器实

  7. java – 在TomEE上使用JAX-RS时的“无资源方法”

    使用库存TomEE,我无法获得简单的JAX-RS资源.我不断得到一个错误:资源类:packagecom.tensorWrench.test;web.xml中:的build.gradle:我尝试了一些排列,添加beans.xml,删除,更改注释的顺序,使用不同的JavaEE类编译依赖项.我一直都会遇到这个错误.解决方法看起来您的资源方法在范围上不公开.试试这个:

  8. java – 如何单元测试传入的Jersey MultiPart请求的处理

    编辑运用会抛出一个我认为,在调用我的MultiPartReader之前,还需要以某种方式转换测试生成的MultiPart.在jersey中必须有一些方法,我可以调用它来执行此转换它的方式,当它在已部署的系统上发出MultiPart请求时,或者可能是接收端在接收HTTP请求时进行一些解析..?

  9. 未设置getAttribute(“javax.servlet.request.X509Certificate”)(Spring,CXF,Jetty,JAX-RSv1.1)

    我已经在客户端尝试了其他一些实现,但没有任何改变.我究竟做错了什么?

  10. java – jersey 2.2:ContainerResponseFilter和ContainerRequestFilter永远不会被执行

    解决方法事实证明,您必须手动注册自定义类–如:完整示例:

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部