weblogic中的spring deferred result response

时间:2017-02-01 17:05:16

标签: spring spring-mvc weblogic

我在Spring MVC中实现了DeferredResult。它在Tomcat8中返回正确的响应,但是当我部署到weblogic 12.1.3时给出了404错误。我试图调试以找出发生了什么,然后在某些点处理程序正在寻找web-inf目录中的视图。我在这里很困惑。

你能帮我理解一下吗?

我正在使用Spring

  1. Java 7
  2. Spring 4.2.0.RELEASE
  3. Spring OAuth2
  4. Weblogic 12.1.3

    @RequestMapping(value = "/file/{id}")
    @ResponseBody
    public DeferredResult<ResponseEntity<Resource>> file(@PathVariable String id) {
    DeferredResult<ResponseEntity<Resource>> result = new DeferredResult<>();
    
    try {
        final ImageObject image = null;
        final Resource fileResource = new FileSystemResource(image.getImagePath().replace("E:", "C:"));
        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentLength(fileResource.contentLength());
        result.setResult(new ResponseEntity<>(fileResource, headers, HttpStatus.OK));
    } catch (Exception e) {
    
    }
    
    return result;
    }
    
  5. 提前致谢。

1 个答案:

答案 0 :(得分:0)

在我的情况下,Spring错误地将@RestController的@RequestMapping路径和方法的@RequestMapping路径串联在一起。 Spring日志中的结果URI中重复了@RestController的@RequestMapping路径。

我发现的唯一解决方法是为每个必需的DeferredResult方法创建@RestController s ,而无需在方法中指定@RequestMapping路径。

WebLogic 12.2.1.3.0,春季4.3.23。