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

Andriy Redko commented on CXF-8911:
-----------------------------------

[~dufoli] [~ppalaga] another one which seems to be less intrusive is:

 
{noformat}
public interface AsyncResponseListenerFactory {     
    AsyncResponseListener create();
}

public interface AsyncResponseListener {
    void onBeforeReceived(HttpResponse response);
    void onAfterReceived(HttpResponse response);
} {noformat}
The CXFResponseCallback would do something like that:

 
{noformat}
         CXFResponseCallback responseCallback = new CXFResponseCallback() {     
           
             @Override                
             public void responseReceived(HttpResponse response) {              
     
                listener.onBeforeReceived(response);
                setHttpResponse(response);      
                listener.onAfterReceived(response);                        
             }
         }; {noformat}
Would this one work for you folks? The AsyncResponseListener would be created 
in the same thread as the CXFResponseCallback , every time.

> Allow creating a custom CXFHttpAsyncResponseConsumer
> ----------------------------------------------------
>
>                 Key: CXF-8911
>                 URL: https://issues.apache.org/jira/browse/CXF-8911
>             Project: CXF
>          Issue Type: New Feature
>            Reporter: Peter Palaga
>            Priority: Major
>
> We recently got a [bug 
> report|https://github.com/quarkiverse/quarkus-cxf/issues/947] in Quarkus CXF 
> complaining about non-working context propagation with CXF HC5 client.
> The problem was that if the client is called in context of a Quarkus REST 
> endpoint, whose vert.x thread has the request context setup properly, the 
> request scoped beans are then not accessible e.g. from 
> ContainerRequestFilters which run in in a different thread.
> To make it work, we would need wrap the creation of 
> CXFHttpAsyncResponseConsumer in some code storing the context of the creation 
> thread into a wrapping method that can then be executed by some other thread. 
> I was able to do this by overriding some default classes. What I did can be 
> seen around here: 
> https://github.com/quarkiverse/quarkus-cxf/pull/950/files#diff-568a3d75d004f9f41c6130854755ebb2beae2f30308cc45aa98492d09bac2ecc
> This solution is by no means elegant and I wonder whether it would be 
> feasible to implement some new API to allow creating custom 
> CXFHttpAsyncResponseConsumers?
> Maybe we could introduce some kind of CXFHttpAsyncResponseConsumerFactory?
> I am quite new to CXF internals, so I'd be thankful for any hints how to 
> proceed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to