Hi Dan,
Daniel Kulp wrote:
On Tue July 21 2009 11:25:56 am Alessio Soldano wrote:
The ServiceImpl gets the configurer from the bus after having created
the jaxws proxy factory bean.
Then my custom configurer sets the props in the JaxWSProxyFactoryBean
which in turns copies them to the request context in method
clientClientProxy(Client c), that is called when getting the port.
Now, here are my few questions:
- could this be considered a proper use of the Configurer?
Actually, this is EXACTLY the right use of the Configurer. Good catch.
It's specifically there so the container can provide configuration to the
various beans used throughout CXF.
OK, thanks for confirmation.
I've found
just one implementation of this interface, for something related to
spring configuration
Our normal config mechanism is spring based. Thus, that's the implementation
that is used most often. I don't know if your JBoss integration stuff
exposes any of the spring config to the JBoss/CXF users. If so, you may need
to keep the Spring configurer and "wrapper" it with yours. :
Configurer orig = bus.getExtension(Configurer.class)
bus.setExtension(new ServiceRefStubPropertyConfigurer(serviceRef, orig),
Configurer.class);
and have it call the wrapped configurer as well.
I've switched to the wrapper approach, just to be sure I'm not reducing
user's ability to set a configurer on its own (even if it's actually not
possible in the usecase that led us to this issue).
- I see Configurer has two methods:
void configureBean(Object beanInstance);
void configureBean(String name, Object beanInstance);
I'd actually add another call for the configuration in ServiceImpl using
the former (configureBean(Object beanInstance)) as technically speaking
the latter seems to me to be used for configuring beans of a specific
name and currently the ServiceImpl uses that for
portName+".jaxws-client.proxyFactory" beans.
I'd double check that. Instead of "adding", you MAY be able to just replace
as I think the default of configureBean(Object beanInstance) is to call a
getName on the instance and then call the other method.
I'd leave everything as is currently then. Btw having implemented my
configurer as a wrapper, I call a private method in my configurer from
each of the two methods and then delegate to the corresponding method in
the wrapped configurer. So everything should go on working as originally
meant ;-)
Let me know what do you think, considering you said this could be of use
also for integrations issues besides JBossWS.
Sounds perfect!
OK, thanks for the insight on this.
Cheers
Alessio
--
Alessio Soldano
Web Service Lead, JBoss