【问题标题】:RestTemplate shows page not found but no error exceptionRestTemplate 显示页面未找到但没有错误异常
【发布时间】:2019-01-14 01:19:09
【问题描述】:

已编辑

我的申请有问题。我正在使用 glassfish 4 和 java 8,因为我的环境不能使用 spring 5,所以我使用的是 spring 4。我只需要几个库就可以从另一台服务器访问 API。功能之一是 RestTemplate。每次触发 restTemplate.exchange 时,它​​总是给出 HTTP 500 错误。但一点也不例外。通过查看 web.xml,我知道这是 HTTP 500 错误。没有异常消息,即使我尝试添加 try-catch。它发生在我的生产服务器上,在我的开发服务器上,它运行良好。在我的笔记本电脑中,它运行良好。你能帮我解决这个问题吗?

这是我的 log4j

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.logger.org.hibernate=DEBUG, stdout
log4j.logger.com.opensymphony.xwork2=INFO,stdout
log4j.logger.org.apache.struts2=INFO,stdout
log4j.logger.uk.ltd.getahead.dwr=WARN, stdout
log4j.logger.freemarker.cache=INFO,stdout
log4j.logger.com.jwebs=DEBUG, stdout
log4j.logger.org.springframework=WARNING, stdout

log4j.appender.R.File=application.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.logger.com.opensymphony.xwork2.util.OgnlUtil=error
log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack=error

这里附上我的代码

        RestTemplate templatet = new RestTemplate();

        String url = "http:someurl";
        HttpHeaders headers = new HttpHeaders();
        headers.set("Some header to get", "get");
        headers.add("Some authorization", "authorization");
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<Object> request = new HttpEntity<Object>(headers);
        ResponseEntity<String> sapSecurity = templatet.exchange(url, HttpMethod.GET, request, String.class);

谢谢

【问题讨论】:

  • headersa 这是一个错字吗???。不应该是headers
  • 找不到页面是 404,而不是 500
  • 等等。让我编辑我的帖子
  • 你去。真的需要一些建议
  • 500 是服务器错误,而您提供了客户端代码。我建议您查看服务器日志和服务器应用程序日志。

标签: java spring glassfish resttemplate


【解决方案1】:

已解决

库中似乎发生了崩溃。 Java读取相同的库但版本不同。我有 spring.jar 和 spring-web.4.3.6-RELEASE.jar,这就是它崩溃并且没有显示任何异常的原因。提取异常的唯一方法是通过 servlet。 您可以通过 Tutorialspoint 看到以下教程:

https://www.tutorialspoint.com/servlets/servlets-exception-handling.htm

【讨论】:

    【解决方案2】:

    我建议您尝试执行以下操作,以便您可以通过阅读日志获得有关服务器上正在发生的事情的更多信息。

    try {
         ResponseEntity<String> sapSecurity = templatet.exchange(url, HttpMethod.GET, request, String.class);
    } catch (Exception e) {
       e.printStackTrace();//this stackTrace should appear in the Glassfish log file
    }
    

    此外,您应该检查您的应用是否被服务器上的某种网络策略阻止。

    【讨论】:

    • 好吧,我已经解决了。我已经添加了try-catch。但这不是我的代码错误
    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多