Hello Dan, with setting correct endpointName it works ;)
thanks for help. best regards jano Daniel Kulp <[EMAIL PROTECTED]> 05/14/2008 23:37 Bitte antworten an [email protected] An [email protected] Kopie Thema Re: Antwort: Re: Antwort: Re: Antwort: Re: empty soap action using JAXWS/JAXB [Virus checked] On May 14, 2008, at 5:34 PM, [EMAIL PROTECTED] wrote: > Hello Daniel, > > thanks for quick answer. > hopefully i'll find more time for debuging tomorow. > but now i want to try the trick with setting also endpoint and also > to use > generated service object. > > "actually, you aren't setting an endpointName/portName on the > factory)" > do you mean factory.setEndpointName() with qname of port from wsdl? Or > something more or different? Yep. That exactly. The port name from the wsdl. Dan > > > best regards > jano > > > > > Daniel Kulp <[EMAIL PROTECTED]> > 05/14/2008 23:23 > Bitte antworten an > [email protected] > > > An > [email protected] > Kopie > > Thema > Re: Antwort: Re: Antwort: Re: empty soap action using JAXWS/JAXB > [Virus > checked] > > > > > > > > jano, > > We might be getting someplace. Thanks for doing some debugging. I > hope you're learning some stuff while doing it. :-) > > My main concern is the fact that you are even hitting lines > 131/107/202. For a pure wsdl first case with valid values for the > ServiceName/PortName that match the values in the wsdl, that code > should never be reached. (actually, you aren't setting an > endpointName/portName on the factory) > > Actually, that looks like it.... Looking at the code, if it cannot > find an endpoint of the given name (you aren't giving it one, so it's > creating a default one that might now mathc the wsdl), it creates a > new endpoint with a new binding. > > > Can you get the stack trace at that point? That might help figure > out what is going on. > > > Actually, can you also try using the generated Service object to > create the proxy instead of the JaxWsProxyFactoryBean? If that > works, then I at least know there is something "different" between the > two and would be another place to start looking. > > Dan > > > > > > On May 14, 2008, at 4:42 PM, [EMAIL PROTECTED] > wrote: >> on return from >> public BindingInfo createBindingInfo(ServiceInfo service, >> javax.wsdl.Binding binding, String ns) { >> result contains operation with BindingOperationInfo with two >> extensors - >> one SOAPOperationImpl with soapActionUri set to "default" and one >> SoapOperationInfo wiht action="default" (looks fine for me) >> >> then on the line 202: >> soapOperation.setSoapActionURI(soi.getAction()); >> return empty string, which seems to be incorrect >> >> >> ok .. step back... >> on line 107: public BindingInfo createBindingInfo(ServiceInfo si, >> String >> bindingid, Object conf) { >> variable "si" contains somewhere inside still correct soap action. >> created instance stored in "info" variable doesn't >> in fact also Operation info fetched on line 131: for (OperationInfo >> op : >> si.getInterface().getOperations()) { doesn't contain required >> informations >> ..... >> in fact "si" variable contains the same operation twice .. once >> somewhere >> in bindings[0].operations and second in intf.operations .... for >> later >> there is not soap action (i mean no extensors .. maybe this is a >> problem?) >> >> now i'm a bit lost in unknown code :( but hopefully i helped you a >> bit >> >> best regards >> jano >> >> >> >> >> Daniel Kulp <[EMAIL PROTECTED]> >> 05/13/2008 20:25 >> Bitte antworten an >> [email protected] >> >> >> An >> [email protected] >> Kopie >> >> Thema >> Re: Antwort: Re: empty soap action using JAXWS/JAXB [Virus checked] >> >> >> >> >> >> >> >> I think I'm going to need a test case that shows this. I just did >> some wireshark traces on a bunch of tests and they are all sending >> the >> SOAPAction properly. There are a bunch of things that would break >> if >> this wasn't true such as the tck, ws-addressing interop, etc.... >> >> For the wsdl first stuff, the soapAction should be pulled from the >> WSDL while processing the operations. Specifically, line 540 of the >> SoapBindingFactory.java. That should be grabbing the stuff from the >> wsdl extensor and creating the appropriate thing we need. >> >> >> Dan >> >> >> >> On May 13, 2008, at 4:52 AM, [EMAIL PROTECTED] >> wrote: >> >>> Hi, >>> >>> >>> wsdls says that soap action is "default" but on the wire it's >>> sending >>> nothing. >>> >>> fragment of wsdl >>> <wsdl:binding name='getBrandServiceOperationsBinding' >>> type='tns:getBrandServiceOperations'> >>> <soap:binding style='document' >>> transport='http://schemas.xmlsoap.org/soap/http'/> >>> <wsdl:operation name='getBrandService'> >>> <soap:operation soapAction='default'/> >>> <wsdl:input> >>> <soap:body use='literal'/> >>> </wsdl:input> >>> <wsdl:output> >>> <soap:body use='literal'/> >>> </wsdl:output> >>> <wsdl:fault name='TechnicalExceptionFault'> >>> <soap:fault name='TechnicalExceptionFault' use='literal'/> >>> </wsdl:fault> >>> </wsdl:operation> >>> </wsdl:binding> >>> >>> i didn't find in sources a place, where action is set except the >>> place, >>> which is reading action from annotations. >>> >>> best regards >>> jano >>> >>> >>> >>> >>> Daniel Kulp <[EMAIL PROTECTED]> >>> 05/13/2008 04:34 >>> Bitte antworten an >>> [email protected] >>> >>> >>> An >>> [email protected] >>> Kopie >>> >>> Thema >>> Re: empty soap action using JAXWS/JAXB [Virus checked] >>> >>> >>> >>> >>> >>> >>> >>> What does the wsdl say for the action field on the operations? >>> >>> If you create a service from the wsdl, the wsdl is the definitive >>> contract and is what we use to determine the soap action, not the >>> annotations. >>> >>> Dan >>> >>> >>> On May 7, 2008, at 4:54 AM, [EMAIL PROTECTED] >>> wrote: >>> >>>> Hello, >>>> >>>> i'm using following code to obtain client proxy (some comments in >>>> code) >>>> >>>> >>>> JaxWsProxyFactoryBean factory = new >>>> JaxWsProxyFactoryBean(); >>>> factory.setServiceClass(serviceInterface); // here is >>>> wsdl2java generated port interface (which contains >>>> soapaction="default") >>>> factory.setAddress(address); // service provider >>>> endpoint >>>> factory.setWsdlLocation(wsdlLocation); // in form >>>> classpath:xx.wsdl >>>> factory.setServiceName(QName.valueOf(serviceName)); // >>>> from wsdl >>>> factory.setProperties(new HashMap<String, Object>()); >>>> factory.getProperties().put("schema-validation- >>>> enabled", >>>> new Boolean(schemaValidationEnabled)); // true >>>> T port = (T) factory.create(); >>>> >>>> i'm using cxf 2.1 >>>> >>>> during initialization it takes buildServiceFromWSDL path in >>>> ReflectionServiceFactoryBean >>>> >>>> during this path, it never invoked line like >>>> o.setProperty("action", >>>> getAction(o, method)); >>>> which results in missing (empty) soap action .... which doesn't >>>> work >>>> for >>>> system i want to call. >>>> >>>> Am I doing something wrongly? Or did i miss something? >>>> >>>> I see it as a bug and fix seems to be to add missing magic line >>>> into >>>> initializeWSDLOperation of JaxWsServiceFactoryBean class. There are >>>> more >>>> places which are good enough for me, but i don't know which is the >>>> best in >>>> general. >>>> >>>> best regards >>>> jano >>> >>> --- >>> Daniel Kulp >>> [EMAIL PROTECTED] >>> http://www.dankulp.com/blog >>> >>> >>> >>> >>> >>> >>> >> >> --- >> Daniel Kulp >> [EMAIL PROTECTED] >> http://www.dankulp.com/blog >> >> >> >> >> >> >> > > --- > Daniel Kulp > [EMAIL PROTECTED] > http://www.dankulp.com/blog > > > > > > > --- Daniel Kulp [EMAIL PROTECTED] http://www.dankulp.com/blog
