Hi dear,
I'm using CXF client to access RS resource. And I register multiple
ClientResponseFilters for one client, but I see the execution order is
random, here is my code:
public void testNew2ResponseFilter(Map<String, String> param,
StringBuilder ret) {
String serverIP = param.get("serverIP");
String serverPort = param.get("serverPort");
ClientBuilder cb = ClientBuilder.newBuilder();
Client c = cb.build();
* c.register(ClientResponseFilter1.class);*
WebTarget t1 = c.target("http://" + serverIP + ":" + serverPort +
"/" + moduleName + "/ComplexClientTest/ComplexResource");
*WebTarget t2 = c.target("http://" + serverIP + ":" + serverPort +
"/" + moduleName +
"/ComplexClientTest/ComplexResource").register(ClientResponseFilter2.class);*
Response res1 =
t1.path("echo1").path("test1").request().get(Response.class);
Response res2 =
t2.path("echo2").path("test2").request().get(Response.class);
System.out.println("config: " +
c.getConfiguration().getProperties());
c.close();
ret.append(res1.getStatus() + "," + res2.getStatus());
}
I didn't set order number when I register the filters. So when I debug the
CXF code, I see if I didn't set order number for filter, CXF will set 5000
for ClientResponseFilter. And CXF will save filters to a provider list. But
this list is a HashMap (No order).... I'm not sure if can CXF change to
LinkedHashMap or other order list?
Here is the code in org.apache.cxf.jaxrs.impl.ConfigurationImpl:
private Map<Object, Map<Class<?>, Integer>> providers =
new HashMap<Object, Map<Class<?>, Integer>>();
I'm not sure if I understand correct. If no, could you please correct me if
anything I write wrong to make the filter execution non-order.
Thanks a lot! :)
--
View this message in context:
http://cxf.547215.n5.nabble.com/Register-multiple-ClientResponseFilters-the-execution-order-is-random-because-the-providerlist-is-Ha-tp5748453.html
Sent from the cxf-dev mailing list archive at Nabble.com.