cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "xfcjscn (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-6452) Spring Autowired annotataion on HttpServletRequest can not get latest request
Date Sun, 14 Jun 2015 01:11:00 GMT

    [ https://issues.apache.org/jira/browse/CXF-6452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14584900#comment-14584900
] 

xfcjscn commented on CXF-6452:
------------------------------

This issue apply to both JAX-RS & JAX-WS, as this is part of spring integration.
Cxf service will be registed as spring bean, so spring's @Autowired can be used like below
example.
Code example:
@Path("/sudoor/captcha")
@Produces(MediaType.TEXT_PLAIN)
public class CaptchaValidateController {
	@Autowired
	CaptchaEngine captchaEngine;
	
	@Autowired
	HttpSession session;

	@Autowired
	HttpServletRequest request;

	/**
	 * parameter _captcha need to be availabe in request
	 * @return
	 * @throws Exception
	 */
	@GET
	@Path("validate")
	public boolean validate() throws Exception {
		return captchaEngine.validate(request);
	}
}

In this case, the injected request is not the wrapped one(some filter may wrap the original
request).
Spring servlet do the update in FrameworkServlet.processRequest() via RequestContextHolder.setRequestAttributes(),
so that servlet can get latest one(wrapped one) in further process.
But in cxf, there is no code to update the RequestContextHolder, and it will always get the
original one. 


> Spring Autowired annotataion on HttpServletRequest can not get latest request
> -----------------------------------------------------------------------------
>
>                 Key: CXF-6452
>                 URL: https://issues.apache.org/jira/browse/CXF-6452
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 3.1.0
>         Environment: Windows, Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed
mode)
>            Reporter: xfcjscn
>              Labels: autowired, request, spring
>
> Autowired HttpServletRequest updated to wrapped version in FrameworkServlet.processRequest()
via RequestContextHolder.setRequestAttributes(), so that further processes which rely on Autowired
HttpServletRequest can get wrapped version not original version. 
> While CXF spring integration don't update it, and it will get original request not wrapped
version.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message