Looking at ClientProxyFactoryBean code (method create() ), it seems I can register some kind of listener to be aware of Client creation :
this.getServiceFactory().sendEvent(FactoryBeanListener.Event.PROXY_CREATED, classes, handler, obj); How can I register a listener for that kind of event ? I've looked at the doc (http://cxf.apache.org/docs/bus-configuration.html) but it seems the extension mecanism is not covered ... Any help would be great :) Thanks for your time anyway. Manuel Le Tue Nov 25 2014 at 09:53:34, Manu <mekt...@gmail.com> a écrit : > Yes, I know but I want to avoid to configure each service (there is a > hundred services at least), so I was looking for something more centric ;) > I know also I can configure the feature in the bus directly but my bus > contains both SOAP and REST services. > So I was looking for a "hook" in the initialization steps of the client > and server to activate it programmatically ... > > > Le Tue Nov 25 2014 at 09:50:30, Andrei Shakirin <ashaki...@talend.com> a > écrit : > > Hi, >> >> Features are configurable in Spring as well, you can find that in samples >> delivered with CXF distribution: >> >> <jaxws:endpoint xmlns:customer="http://customerservice.example.com/" >> id="CustomerServiceHTTP" address="http://localhost:9090 >> /CustomerServicePort" serviceName="customer:CustomerServiceService" >> endpointName="customer:CustomerServiceEndpoint" implementor="com.example. >> customerservice.server.CustomerServiceImpl"> >> <jaxws:features> >> <bean class="org.apache.cxf.ws.addressing. >> WSAddressingFeature"/> >> </jaxws:features> >> </jaxws:endpoint> >> >> ... >> >> <jaxws:client id="customerService" address="jms://" >> serviceClass="com.example.customerservice.CustomerService"> >> <jaxws:features> >> <bean class="org.apache.cxf.ws.addressing. >> WSAddressingFeature"/> >> </jaxws:features> >> </jaxws:client> >> >> Regards, >> Andrei. >> >> > -----Original Message----- >> > From: Manu [mailto:mekt...@gmail.com] >> > Sent: Dienstag, 25. November 2014 09:41 >> > To: users@cxf.apache.org >> > Subject: Re: Activating WS-Addressing dynamically on selected service >> > >> > Yes I've seen those lines but my services are declared through Spring >> ... >> > >> > >> > Le Tue Nov 25 2014 at 09:26:26, Andrei Shakirin <ashaki...@talend.com> >> a >> > écrit : >> > >> > > Hi, >> > > >> > > I guess I already sent you this peace of code: >> > > >> > > // Option 1 >> > > WSAddressingFeature wsa = new WSAddressingFeature(); ... >> > > // Create client or/and server >> > > ... >> > > wsa.initialize(client, client.getBus()); wsa.initialize(server, >> > > server.getBus()); >> > > >> > > // Option 2 >> > > MyServiceImpl implementor = new MyServiceImpl() EndpointImpl ep = >> > > (EndpointImpl) Endpoint.create(implementor); ep.getFeatures().add(new >> > > WSAddressingFeature()); ep.publish("http://some/address"); >> > > >> > > ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); >> > > factory.setServiceClass(MyService.class); >> > > factory.setAddress("http://acme.come/some-service"); >> > > factory.getFeatures().add(new WSAddressingFeature()); MyService client >> > > = (MyService) factory.create(); >> > > >> > > Please look into http://cxf.apache.org/docs/ws-addressing.html for >> > > further details. >> > > >> > > You can enable it for client and server and then dynamically switch on >> > > / switch off the decoupled endpoint through anonymous address. >> > > >> > > Regards, >> > > Andrei. >> > > >> > > > -----Original Message----- >> > > > From: Manu [mailto:mekt...@gmail.com] >> > > > Sent: Montag, 24. November 2014 16:39 >> > > > To: users@cxf.apache.org >> > > > Subject: Re: Activating WS-Addressing dynamically on selected >> > > > service >> > > > >> > > > And the way to enable WS-Addressing only for SOAP endpoint with >> > > > something like a feature ? Is there a kind of interceptor for the >> > > > initialization >> > > phase of the >> > > > client and server endpoint ? >> > > > >> > > > >> > > > Le Mon Nov 24 2014 at 16:31:08, Andrei Shakirin >> > > > <ashaki...@talend.com> a écrit : >> > > > >> > > > > Hi, >> > > > > >> > > > > If you just need to deactivate WS-Addressing decoupled endpoint >> > > > > for client call, you can use this code: >> > > > > ((BindingProvider)proxy).getRequestContext() >> > > > > .put("org.apache.cxf.ws.addressing.replyto", >> AddressingConstants. >> > > > > getAnonymousURI()); >> > > > > >> > > > > And activate it again by setting appropriate endpoint address into >> > > > > "org.apache.cxf.ws.addressing.replyto". >> > > > > >> > > > > Regards, >> > > > > Andrei. >> > > > > >> > > > > > -----Original Message----- >> > > > > > From: Manu [mailto:mekt...@gmail.com] >> > > > > > Sent: Montag, 24. November 2014 10:59 >> > > > > > To: users@cxf.apache.org >> > > > > > Subject: Re: Activating WS-Addressing dynamically on selected >> > > > > > service >> > > > > > >> > > > > > We have two needs : >> > > > > > - Our CXF bus contains both SOAP services and REST service. I >> > > > > > want to >> > > > > activate >> > > > > > WS-Addressing only on SOAP Services (of course :) ) >> > > > > > - On the other hand, the asynchronous feature of WS-Addressing >> > > > > > will not >> > > > > be >> > > > > > activated all the time. We have a context (accessible from a >> > > > > ThreadLocal) that >> > > > > > tell us if we must activate asynchronous execution. BAsed on >> > > > > > this >> > > > > context I was >> > > > > > wondering if I can simply disable WS-Addressing dynamically. >> > > > > > Otherwise I think I found a way by using an interceptor which >> > > > > > sets the >> > > > > ReplyTo >> > > > > > address to "http://www.w3.org/2005/08/addressing/none", this >> way >> > > > > > the asynchronous execution is disabled. >> > > > > > >> > > > > > Tell me if I'm not clear enough ;) Manuel >> > > > > > >> > > > > > >> > > > > > >> > > > > > On Tue, Nov 18, 2014 at 10:52 PM, Andrei Shakirin >> > > > > > <ashaki...@talend.com> >> > > > > > wrote: >> > > > > > >> > > > > > > Hi, >> > > > > > > >> > > > > > > Could you explain your use case a bit more? >> > > > > > > Are you activating WS-Addressing on the client side depending >> on >> > > > > > > external event? >> > > > > > > >> > > > > > > Basically you can do something like this to activate WSA on >> the >> > > > > > > client >> > > > > > > side: >> > > > > > > WSAddressingFeature wsa = new WSAddressingFeature(); >> > > > > > > wsa.initialize(client, client.getBus()); >> > > > > > > >> > > > > > > If you need to deactivate that you need either to create new >> > > > > > > client instance or remove corresponded interceptors from >> existing >> > > client. >> > > > > > > >> > > > > > > Regards, >> > > > > > > Andrei. >> > > > > > > >> > > > > > > > -----Original Message----- >> > > > > > > > From: Manu [mailto:mekt...@gmail.com] >> > > > > > > > Sent: Montag, 17. November 2014 14:17 >> > > > > > > > To: users@cxf.apache.org >> > > > > > > > Subject: Re: Activating WS-Addressing dynamically on >> selected >> > > > > > > > service >> > > > > > > > >> > > > > > > > I looking at adding manually the interceptors. >> > > > > > > > On what should I add thoses interceptors ? On the endpoint >> ? Can >> > > > > > > > I had >> > > > > > > those >> > > > > > > > only for the current exchange ? >> > > > > > > > We want to activate WS-Addressing dynamically based on a >> context >> > > > > > > property (a >> > > > > > > > context we manage). >> > > > > > > > The asynchronous feature needs to be activated only in some >> > > > > conditions. >> > > > > > > > How can I do that ? >> > > > > > > > Should I add/remove the interceptors on the endpoint based >> on >> > > > > > > > this >> > > > > > > context ? >> > > > > > > > >> > > > > > > > Regards >> > > > > > > > Manuel >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > On Tue, Nov 11, 2014 at 9:09 AM, Andrei Shakirin >> > > > > > > > <ashaki...@talend.com> >> > > > > > > > wrote: >> > > > > > > > >> > > > > > > > > Hi, >> > > > > > > > > >> > > > > > > > > There are some options to do that: >> > > > > > > > > a) You can add features into client factory: >> > > > > > > > > JaxWsProxyFactoryBean factory = new >> JaxWsProxyFactoryBean(); >> > > > > > > > > factory.setAddress("http://acme.come/some-service"); >> > > > > > > > > factory.getFeatures().add(new WSAddressingFeature()); >> > > > > > > > > MyService client = (MyService) >> > > > > > > > > factory.create(MyService.class); >> > > > > > > > > >> > > > > > > > > b) You can activate WS-Addressing using policy: >> > > > > > > > > http://cxf.apache.org/docs/ws-addressing.html >> > > > > > > > > >> > > > > > > > > c) You can manually add WS-Addressing interceptors, in the >> > > > > > > > > same way as WSAddressingFeature does that. >> > > > > > > > > >> > > > > > > > > Regards, >> > > > > > > > > Andrei. >> > > > > > > > > >> > > > > > > > > > -----Original Message----- >> > > > > > > > > > From: Manu [mailto:mekt...@gmail.com] >> > > > > > > > > > Sent: Montag, 10. November 2014 16:31 >> > > > > > > > > > To: users@cxf.apache.org >> > > > > > > > > > Subject: Activating WS-Addressing dynamically on >> selected >> > > > > > > > > > service >> > > > > > > > > > >> > > > > > > > > > Hi, >> > > > > > > > > > >> > > > > > > > > > Is there a way (some class I can extend) to activate >> > > > > > > > > > ws-adressing >> > > > > > > > > dynamically >> > > > > > > > > > without configuring it int the spring configuration >> file. >> > > > > > > > > > We want to be able to activate asynchronous execution >> based >> > > > > > > > > > on some conditions. >> > > > > > > > > > >> > > > > > > > > > I've tried to create a feature and override public void >> > > > > > > > > initialize(Client client, Bus >> > > > > > > > > > bus) but this method is not called when creating a >> client ... >> > > > > > > > > > >> > > > > > > > > > Does anyone have an idea ? >> > > > > > > > > > Thanks >> > > > > > > > > > Manuel >> > > > > > > > > >> > > > > > > >> > > > > >> > > >> >