Hi Dan,
in this case endpointName is missing also here, isn't it? But everything
seems to work in this case
<jaxws:endpoint
id="endpoint-GetTmServiceTemplatePort"
implementor="#at.....GetTmServiceTemplatePort"
implementorClass="at.....GetTmServiceTemplatePort"
address="/at-lookup-tmservicetemplate-1.0"
wsdlLocation=
"classpath:repository/at-lookup-tmservicetemplate-1.0/at-lookup-tmservicetemplate-1.0.wsdl"
serviceName="serNs:getTmServiceTemplatePortService"
xmlns:serNs="http://..../tmservicetemplate"
>
<jaxws:properties>
<entry key="schema-validation-enabled" value=
"true" />
</jaxws:properties>
</jaxws:endpoint>
thanks.
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