I have already asked this question on StackOverflow, but nobody has answered yet. http://stackoverflow.com/questions/26762175/how-can-i-make-soap-java-client-requests-with-dynamic-headers
I want to make a Java-based SOAP client, which connects to the server which uses CXF. I have services' interfaces (jar from the Server) and classes which wrap requests/responses to the server. So I tried to use CXF on the client side too. So what I do now is 1) get instance for the service's interface JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); List<Interceptor<? extends Message>> outInterceptors = new ArrayList<Interceptor<? extends Message>>(); List<Interceptor<? extends Message>> inInterceptors = new ArrayList<Interceptor<? extends Message>>(); outInterceptors.add(new OutInterceptor(login, password)); inInterceptors.add(new InInterceptor()); factory.setOutInterceptors(outInterceptors); factory.setInInterceptors(inInterceptors); factory.setServiceClass(OxygenService.class); factory.setAddress(currentEndpoint + "/oxygen"); oxygenService = (OxygenService)factory.create(); 2) So now I have an instance of the service - oxygenService. And so I can perform requests. Like this: oxygenService.updateProfile(userId, lastName, firstName, phone); Unfortunately, there is a huge problem - how can I specify extra dynamic headers for each request? The server expects from me special header called 'dynamicId'. I can calculate it's value while calling oxygenService, but it seems there is no way to specify headers there - all I can is to call something from oxygenService. The only way to specify header is to use interceptors, but I can not get 'dynamicId' in the interceptor (because how can I know which 'dynamicId' is related to which request). So to sum up, there is a list of what I want: 1) I want to keep using services' interfaces 2) I want to keep using request and response wrappers (not to generate xml manually) 3) I want to dynamically specify headers for exact request 4) Solution has to be thread-safe I also figured out that there is ClientProxy which can change headers for oxygenService, but it's not safe in terms of concurrency. -- View this message in context: http://cxf.547215.n5.nabble.com/How-can-I-make-requests-with-dynamic-headers-tp5750756.html Sent from the cxf-user mailing list archive at Nabble.com.
