[
https://issues.apache.org/jira/browse/CXF-6190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14273456#comment-14273456
]
Sergey Beryozkin commented on CXF-6190:
---------------------------------------
No problems at all, sorry it took me awhile to figure out what the problem was.
This is not a standard specific issue, it is all down to the fact that the
service object provided to the runtime is a proxy, and moving the setter to the
interface ensures that this setter is part of the proxy. In my tests I do not
have these setters on the main interface representing the service but on the
the dedicated interface like Injectable.Alternatively, with Spring at least,
enabling Cglib proxy mode can help.
> HttpServletRequest injection via Context in setter
> --------------------------------------------------
>
> Key: CXF-6190
> URL: https://issues.apache.org/jira/browse/CXF-6190
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 3.0.3
> Reporter: Zdeněk Obst
> Assignee: Sergey Beryozkin
> Fix For: NeedMoreInfo
>
>
> I'm trying to inject HttpServletRequest to my JAX-RS resource via @Context
> annotation. It works fine if I inject it via method parameter. But I don't
> want to "mess" my interfaces with that so I'd like to inject it via setter.
> I use this simple method (I'm using Kotlin but I the issue should be the same
> for Java):
> {code:java}
> var req : HttpServletRequest? = null
> Context
> fun setRequest(req : HttpServletRequest) {
> this.req = req
> }
> {code}
> The thing is, that the setter is called via reflection in
> org.apache.cxf.jaxrs.utils.InjectionUtils in method injectThroughMethod. The
> method name is correct but as parameter value is instance of
> ThreadLocalHttpServletRequest which clearly is not HttpServletRequest (it is
> not inherited class) so this gets thrown:
> java.lang.IllegalArgumentException: object is not an instance of declaring
> class
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)