Hi Aki

Thanks a million for your support ! Please help me again with what I discovered 
below:

To answer your questions, this is how it looks the wsdl:operation element under 
the wsdl:binding element:


    <wsdl:binding name="ServiceImplServiceSoapBinding" type="tns:IService">
        <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="getParent">
            <soap:operation soapAction="" style="document"/>
            <wsdl:input name="getParent">
                <soap:header encodingStyle="" message="tns:getParent" 
part="callerId" use="literal"/>
                <soap:header encodingStyle="" message="tns:getParent" 
part="timestamp" use="literal"/>
                <soap:header encodingStyle="" message="tns:getParent" 
part="signature" use="literal"/>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output name="getParentResponse">
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>


And now, let me add something I found that I think it can be very interesting. 
I found this website in the Internet: https://www.wsdl-analyzer.com/

If I put my WSDL (the one generated in WebLogic, I did not change anything!). 
It tells me it has one error for each of the calls that the WebService is 
offering. In this case, for the getParent is telling me this as an error:

        The operation 'getParent' uses the message 'getParent' which has more 
than one part.

The getParent in the WSDL is as following:

    <wsdl:message name="getParent">
        <wsdl:part element="tns:getParent" name="parameters"/>
        <wsdl:part element="tns:callerId" name="callerId"/>
        <wsdl:part element="tns:timestamp" name="timestamp"/>
        <wsdl:part element="tns:signature" name="signature"/>
    </wsdl:message>

So it has "more than one part". Then I did this change (manual change which I 
really wouldn't like to do any manual change, but just as a test):

            <xs:element name="getParentType" type="tns:getParentType"/>
            <xs:complexType name="getParentType">
                <xs:sequence>
                    <xs:element name="parameters" type="tns:getParent"/>
                    <xs:element name="callerId" type="tns:callerId"/>
                    <xs:element name="timestamp" type="tns:timestamp"/>
                    <xs:element name="signature" type="tns:signature"/>
                </xs:sequence>
            </xs:complexType>

                ...

            <wsdl:message name="getParent">
                <wsdl:part element="tns:getParentType" name="Wrapper"/>
            </wsdl:message>             

So now the getParent is only 1 part. And in fact, if I use the website 
https://www.wsdl-analyzer.com/, now it tells me that the WSDL is correct. But 
unfortulately, if I deploy the WebService in WebLogic pointing to this local 
and manually changed WSDL (adding wsdlLocation="..." in my cxf_servlet.xml 
file)... then it fails at deploying time in WebLogic with a strange 
java.lang.NullPointerException:

<02-Dec-2015 16:14:18 o'clock GMT> <Error> <HTTP> <BEA-101216> <Servlet: "cxf" 
failed to preload on startup in Web application: 
"omniWebService_VAPP_war_exploded".
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'omniWebService': Invocation of init method failed; nested exception 
is javax.xml.ws.WebSe
rviceException: java.lang.NullPointerException
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1422)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
        at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        Truncated. see log file for complete stacktrace
Caused By: javax.xml.ws.WebServiceException: java.lang.NullPointerException
        at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:371)
        at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251)
        at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:539)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.NullPointerException
        at org.apache.cxf.common.util.ASMHelper.getClassCode(ASMHelper.java:209)
        at 
org.apache.cxf.jaxws.WrapperClassGenerator.generateMessagePart(WrapperClassGenerator.java:310)
        at 
org.apache.cxf.jaxws.WrapperClassGenerator.createWrapperClass(WrapperClassGenerator.java:224)
        at 
org.apache.cxf.jaxws.WrapperClassGenerator.generate(WrapperClassGenerator.java:132)
        at 
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.generatedWrapperBeanClass(JaxWsServiceFactoryBean.java:683)
        Truncated. see log file for complete stacktrace
>
<02-Dec-2015 16:14:18 o'clock GMT> <Error> <Deployer> <BEA-149265> <Failure 
occurred in the execution of deployment request with ID "24274166714283537" for 
task "127". Error is:
 "weblogic.application.ModuleException: java.lang.NullPointerException"
weblogic.application.ModuleException: java.lang.NullPointerException
        at 
weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
        at 
weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
        at 
weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
        at 
weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211)
        at 
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.NullPointerException
        at org.apache.cxf.common.util.ASMHelper.getClassCode(ASMHelper.java:209)
        at 
org.apache.cxf.jaxws.WrapperClassGenerator.generateMessagePart(WrapperClassGenerator.java:310)
        at 
org.apache.cxf.jaxws.WrapperClassGenerator.createWrapperClass(WrapperClassGenerator.java:224)
        at 
org.apache.cxf.jaxws.WrapperClassGenerator.generate(WrapperClassGenerator.java:132)
        at 
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.generatedWrapperBeanClass(JaxWsServiceFactoryBean.java:683)
        Truncated. see log file for complete stacktrace
>
<02-Dec-2015 16:14:18 o'clock GMT> <Error> <Deployer> <BEA-149202> <Encountered 
an exception while attempting to commit the 9 task for the application 
"omniWebService_VAPP_war_e
xploded".>


Any help with this please ?

Thanks
flx





-----Original Message-----
From: Aki Yoshida [mailto:[email protected]] 
Sent: 02 December 2015 15:14
To: [email protected]
Subject: Re: CXF incorrect WSDL automatically generated ? Please help !

cxf-2.7.12 isn't so old and it shouldn't be generating the wrong wsdl for the 
headers.
how does the corresponding wsdl:operation element under the wsdl:binding 
element look like?


2015-12-02 13:33 GMT+01:00 Mercader, Felix <[email protected]>:
> Thanks Aki
>
> I am using CXF version 2.7.12
>
>
>
>
>
> -----Original Message-----
> From: Aki Yoshida [mailto:[email protected]]
> Sent: 02 December 2015 12:26
> To: [email protected]
> Cc: Mercader, Felix
> Subject: Re: CXF incorrect WSDL automatically generated ? Please help !
>
> which cxf version are you using?
> it could be an old bug.
>
> Questions should go to users@cxf, so I have moved this thread to there..
>
>
> 2015-12-02 13:07 GMT+01:00 Felix.1973 <[email protected]>:
>> Hi there. I am fighting the last two days with the same problem and I 
>> don't know how to fix this. Even not sure if it is an error or not.
>>
>> I have a CXF Web Service with something I consider very strange and I 
>> would like to fix. This is one of the calls that the Web Service deals with:
>>
>>     @WebResult (name="merchantHierarchyParentResponse")
>> MerchantHierarchyParentResponseDTO
>>     getParent(
>>             @WebParam(name="institutionNumber")
>> @XmlElement(required=true) String institutionNumber,
>>             @WebParam(name="clientNumber") String clientNumber,
>>             @WebParam(name="ourReference") String ourReference,
>>             @WebParam(name="accessMerch") String accessMerch,
>>             @WebParam(header=true, name="callerId") String callerId,
>>             @WebParam(header=true, name="timestamp") String timestamp,
>>             @WebParam(header=true, name="signature") String signature
>>     );
>>
>> As you can see, it receives 4 normal parameters plus 3 extra 
>> parameters in the header (callerId, timestamp and signature).
>>
>> It compiles successfully. Then I deploy it also successfully in a 
>> WebLogic server.
>>
>> Finally, I use SoapUI to test it. I provide SoapUI with the URL that 
>> WebLogic is providing me with the WSDL. This is, I am not doing any 
>> change in the automatic generated WSDL. This is what I am getting for 
>> this getParent in SoupUI:
>>
>> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>> xmlns:web="http://webService.webservice.omnipay.com.server/";>
>>    <soapenv:Header>
>> *      <web:signature>?</web:signature>
>>       <web:timestamp>?</web:timestamp>
>>       <web:callerId>?</web:callerId>*
>>    </soapenv:Header>
>>    <soapenv:Body>
>>       <web:getParent>
>>          <institutionNumber>?</institutionNumber>
>>
>>          <clientNumber>?</clientNumber>
>>
>>          <ourReference>?</ourReference>
>>
>>          <accessMerch>?</accessMerch>
>>       </web:getParent>
>> /*      <web:callerId>?</web:callerId>
>>       <web:timestamp>?</web:timestamp>
>>       <web:signature>?</web:signature>*/
>>    </soapenv:Body>
>> </soapenv:Envelope>
>>
>> My question is very clear. I see the 3 parameters in the header 
>> section (callerId, timestamp and signature) but why these 3 
>> parameters are *AGAIN* at the end in the body part ??? I don't want 
>> them in the body part, I want them only in the header.
>>
>> Any idea why this is happening ? Is that normal ? is it a bug ? Thank 
>> you for your help !
>>
>> thanks
>> Felix Mercader
>>
>>
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://cxf.547215.n5.nabble.com/CXF-incorrect-WSDL-automatically-gene
>> r ated-Please-help-tp5763489.html Sent from the cxf-dev mailing list 
>> archive at Nabble.com.
>
> The information in this message may be proprietary and/or confidential, and 
> protected from disclosure. If the reader of this message is not the intended 
> recipient, or an employee or agent responsible for delivering this message to 
> the intended recipient, you are hereby notified that any dissemination, 
> distribution or copying of this communication is strictly prohibited. If you 
> have received this communication in error, please notify First Data 
> immediately by replying to this message and deleting it from your computer.

The information in this message may be proprietary and/or confidential, and 
protected from disclosure. If the reader of this message is not the intended 
recipient, or an employee or agent responsible for delivering this message to 
the intended recipient, you are hereby notified that any dissemination, 
distribution or copying of this communication is strictly prohibited. If you 
have received this communication in error, please notify First Data immediately 
by replying to this message and deleting it from your computer.

Reply via email to