There's now a bug for these configuration problems: https://issues.apache.org/jira/browse/CXF-3754. I've submitted a patch and debugged through it to verify it allows setting properties, address, and bus now. However, I could not find where to get the handler information. I believe it should be there because a jaxws:client can have jaxws:handler entries according to the schema but I could not find that data in the client factory object that got configured by spring.
Thanks, Jesse -----Original Message----- From: Daniel Kulp [mailto:dk...@apache.org] Sent: Friday, August 19, 2011 2:24 PM To: users@cxf.apache.org Cc: Jesse Pangburn Subject: Re: Can Dispatch API be used with jaxws:client Spring configuration? On Friday, August 19, 2011 3:34:53 PM Jesse Pangburn wrote: > It seems that the ServiceImpl code is copying over stuff from the following > items (all this stuff is near the 620 line): features, interceptors, > conduit selector > > It seems to do nothing with the following: > address, bus, properties, handlers > > I don't know which of these things it SHOULD do. To my noobie viewpoint, it > seems like it should copy the address information if present, set the bus > in the endpoint object if present, and copy any properties found into the > endpoint object. I have no idea what to do with handlers. Yep. I agree with all of that. For the Handler, you would need to build up a HandlerChain and call dispatch.getBinding().setHandlerChain(..) with is. > Unless anyone disagrees, I'll make a bug report for this and patch it. I'll > also patch the DispatchImpl to respect the ws-addressing feature if set in > the jaxws:client bean. Perfect. :-) Dan > > Thanks, > Jesse > > -----Original Message----- > From: Jesse Pangburn [mailto:jesse.pangb...@us.lawson.com] > Sent: Friday, August 19, 2011 12:54 PM > To: Daniel Kulp; users@cxf.apache.org > Subject: RE: Can Dispatch API be used with jaxws:client Spring > configuration? > > When I debug into ServiceImpl line 610, it gets down to > org.apache.cxf.configuration.spring.ConfigurerImpl and line 151 throws: > org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean > named > '{urn:ihe:iti:xds-b:2007}DocumentRegistry_Port_Soap12.jaxws-client.proxyFac > tory' is defined > > This is caught and logged FINE, which amusingly has the comment: > // users often wonder why the settings in their configuration > files seem // to have no effect - the most common cause is that they have > been using // incorrect bean ids > > If I check my spring context and call context.getBeanDefinitionNames() I get > the following (among others): registryClient.jaxws-client.proxyFactory > > It does not have an entry with that name from the exception. The similar > entry is does have is from the id attribute, so I tried removing that id > attribute (and other things) but leaving the createdFromAPI (because that > makes the .jaxws-client part of the name) from jaxws:client and just > leaving: <jaxws:client > name="{urn:ihe:iti:xds-b:2007}DocumentRegistry_Port_Soap12" > address="http://localhost:30320/tf6/services/xdsregistryb" > createdFromAPI="true"> > <jaxws:features> > <wsa:addressing/> > </jaxws:features> > </jaxws:client> > > Now the ConfigurerImpl matches the bean name and configured it and > ServiceImpl line 621 does apply the ws-addressing feature, but > unfortunately the addressing is wrong. Probably same problem as yesterday > when I tried configuring it via the cxf:bus, that code in DispatchImpl is > probably not enabling ws-addressing. Also, it uses the address from the > WSDL and ignores the address in the jaxws:client element. > > At least it's closer. > > Thanks, > Jesse > > -----Original Message----- > From: Daniel Kulp [mailto:dk...@apache.org] > Sent: Thursday, August 18, 2011 7:51 PM > To: users@cxf.apache.org > Cc: Jesse Pangburn > Subject: Re: Can Dispatch API be used with jaxws:client Spring > configuration? > > > This SHOULD be working. > > Line 610 of ServiceImpl.java calls off to the configureObject with the right > name, so it should be configuring in the features and then copying them > over at line 621. Any chance you can debug through that code to see if > anything looks strange? > > Dan > > On Thursday, August 18, 2011 3:11:40 PM Jesse Pangburn wrote: > > I'm trying to use the Spring jaxws:client configuration to put as much > > of > > the setup for my Dispatch API client into Spring as possible, but it > > seems to be ignoring it. > > > > The following is the code I'm using to setup the dispatch client: > > URL wsdlURL = new > > URL("file:/home/jpangburn/Desktop/IHE/XDSb.Support.Materials.v9/wsdl/XDS > > .b_ DocumentRegistry.wsdl"); Service service = Service.create(wsdlURL, > > new QName("urn:ihe:iti:xds-b:2007", "DocumentRegistry_Service")); > > Dispatch<StaxSource> disp = service.createDispatch(new > > QName("urn:ihe:iti:xds-b:2007", "DocumentRegistry_Port_Soap12"), > > StaxSource.class, Service.Mode.PAYLOAD); > > > > So the port is "{urn:ihe:iti:xds-b:2007}DocumentRegistry_Port_Soap12". > > In my Spring configuration I've tried this: <jaxws:client > > id="registryClient" > > name="{urn:ihe:iti:xds-b:2007}DocumentRegistry_Port_Soap12" > > address="http://localhost:30320/tf6/services/xdsregistryb" > > > > xmlns:ihe="urn:ihe:iti:xds-b:2007" > > > > endpointName="ihe:DocumentRegistry_Port_Soap12" > > serviceName="ihe:DocumentRegistry_Service" > > > > createdFromAPI="true"> > > <jaxws:features> > > > > <wsa:addressing > > xmlns:wsa="http://cxf.apache.org/ws/addressing"/> > > > > </jaxws:features> > > > > </jaxws:client> > > > > At first I hoped the "name" attribute would cause the matching at it > > would pick up my "address" attribute to set the destination address and > > my wsa:addressing feature to enable ws-addressing. It did not, just > > sent to the same url defined in the WSDL. So I added the endpointName > > and serviceName attributes, which also didn't help. Then I added > > "createdFromAPI" which didn't do anything either. > > > > I know the Spring configuration is working to some degree because if I > > put in a http:conduit that works just fine: <http:conduit > > name="{urn:ihe:iti:xds-b:2007}DocumentRegistry_Port_Soap12.http-conduit" > > > > > <http:tlsClientParameters disableCNCheck="true"> > > > > ... > > > > Is jaxws:client configuration just not related to the Dispatch API at > > all? If so, why not? This seems like it would be a nice way to setup > > address overrides, turn on/off jaxws:features, logging, interceptors, > > etc. for the Dispatch API. > > > > Thanks, > > Jesse -- Daniel Kulp dk...@apache.org http://dankulp.com/blog Talend - http://www.talend.com