我遵循了Jersey 2.0文档(https://jersey.java.net/documentation/latest/user-guide.html#json.moxy),修改了pom.xml,其中包括jersey-media-moxy构件,并进行了编译和安装。对于Produce和Consume案例,我可以获得从POJO到JSON的基本映射工作。

但是,当我尝试使用一些具有复杂数据类型的POJO作为资源返回类型时,出现了很多Status 500 Internal Server Error,但没有任何服务器日志。这很烦人。有人知道这是一个错误还是我错过了配置?

顺便说一下,为了对POJO对象使用Moxy映射,POJO需要具有一个空的参数构造函数。还有其他要求吗?

最佳答案

我有同样的问题,发现这篇文章:

  • http://jersey.576304.n2.nabble.com/Missing-MOXy-Log-Messages-In-Tomcat-td7580992.html

  • 作者实现了ApplicationEventListener来记录Moxy抛出的异常。这是我的实现(需要在您的应用程序中注册):
    public class ExceptionListener implements ApplicationEventListener {
    
        @Override
        public void onEvent(ApplicationEvent event) {
    
        }
    
        @Override
        public RequestEventListener onRequest(RequestEvent requestEvent) {
            return new ExceptionRequestEventListener();
        }
    
        public static class ExceptionRequestEventListener implements RequestEventListener{
            private final Logger logger;
    
            public ExceptionRequestEventListener(){
                logger = Logger.getLogger(getClass());
            }
    
            @Override
            public void onEvent(RequestEvent event) {
                switch (event.getType()){
                    case ON_EXCEPTION:
                        Throwable t = event.getException();
                        logger.error("Found exception for requestType: "+event.getType(), t);
                }
            }
        }
    }
    

    关于json - Jersey 2.0和Moxy内部服务器错误,但没有服务器日志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17667442/

    10-13 01:40