Hi Phil,

I'm going to move my issues to the axis-c user and/or developer's lists.
Alek was kind enough to forward my questions there.

I haven't seen any assertion errors in my code...  yet :-)




On Tuesday 01 June 2004 01:22 pm, Bochnak Filip wrote:
> Hi Alek & Ben
>
> Nice to hear that there are some guys who has nearly the same problem and
> trying to figure it out. ;-)
> I did the notice this a couple of days, ago.
> But I´m not sure about, if this is the right way/answere, because
> I get sometimes a result back and sometimes a message like
> msg_size = null with an error message, when I run the appl.
> (And the wsdl2ws is not working as it has supposed to be. :-[ )
> My error looks as follows:
> "Debug Assertion Failed" File: dbgheap.c Line:1011
> Expression: _CrtIsValidHeapPointer(pUserData)
> Maybe somebody of you can help me out, or post me a simple
> sample for a c++client/java-service on Tomcat.
>
> Thanks, Cu Phil
>
>
> -----Ursprüngliche Nachricht-----
> Von: Aleksander Slominski [mailto:[EMAIL PROTECTED]
> Gesendet: Dienstag, 1. Juni 2004 17:48
> An: [EMAIL PROTECTED]
> Cc: Apache AXIS C Developers List; Apache AXIS C User List
> Betreff: Re: c++ WSDL2Ws creates an extra input parameter
>
> Ben Souther wrote:
> >Thank you, Aleksander.
> >
> >Is there any known work around for this, preferably on the client (c++)
>
> side?
>
>
>
> until it is resolved i would just do global search in source code and
> replace string HTTP/1.1 with 1.0 :)
>
> also you should post this question to axis-c-user and axis-c-dev mailing
> lists (i have CCed them now).
>
> alek
>
>
>
>
> -------- Original Message --------
>
> Subject:      Re: c++ WSDL2Ws creates an extra input parameter
> Date:         Fri, 28 May 2004 18:11:56 -0500
> From:         Aleksander Slominski <[EMAIL PROTECTED]>
> To:   [EMAIL PROTECTED]
> References:   <[EMAIL PROTECTED]>
> <[EMAIL PROTECTED]>
>
> Ben Souther wrote:
>  >More Data......
>  >
>  >Using the tcpmon application, I was able to grab all of the data being
>
> swapped
>
>  >between the client and server.
>  >
>  >For some reason, Axis (server, java) returns the returns the response
>  >"chunked" for the C++ Client but not for the Java client.
>
> the reason is that AXIS C++ client sends HTTP 1.1 request and support in
> clinet for chunked is then assumed by server (tomcat)::
> POST /file_manager/services/EchoCaps HTTP/1.1
>
> alek
>
>  >I assume the delay is due to the connection not closing correctly.
>  >The C++ app probaly returns after the connection times out???
>  >
>  >Again, any help is appreciated
>  >-Ben
>  >
>  >Here is the data intercepted with tcpmon:....
>  >=================================
>  >FROM THE JAVA CLIENT
>  >=================================
>  >Listen Port: 8888
>  >Target Host: 127.0.0.1
>  >Target Port: 8080
>  >==== Request ====
>  >POST /file_manager/services/EchoCaps HTTP/1.0
>  >Content-Type: text/xml; charset=utf-8
>  >Accept: application/soap+xml, application/dime, multipart/related, text/*
>  >User-Agent: Axis/1.1RC2
>  >Host: 127.0.0.1
>  >Cache-Control: no-cache
>  >Pragma: no-cache
>  >SOAPAction: ""
>  >Content-Length: 473
>  >
>  ><?xml version="1.0" encoding="UTF-8"?>
>  ><soapenv:Envelope
>
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>
>  > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>  > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>  > <soapenv:Body>
>  > <ns1:capitalize
>  >soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>  >xmlns:ns1="EchoCaps">
>  > <inputString xsi:type="xsd:string">String from the java
>  >client</inputString>
>  > </ns1:capitalize>
>  > </soapenv:Body>
>  ></soapenv:Envelope>
>  >
>  >
>  >==== Response ====
>  >HTTP/1.1 200 OK
>  >Content-Type: text/xml;charset=utf-8
>  >Date: Fri, 28 May 2004 20:17:24 GMT
>  >Server: Apache-Coyote/1.1
>  >Connection: close
>  >
>  ><?xml version="1.0" encoding="UTF-8"?>
>  ><soapenv:Envelope
>
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>
>  > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>  > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>  > <soapenv:Body>
>  > <ns1:capitalizeResponse
>  > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>  > xmlns:ns1="EchoCaps">
>  > <EchoCaps xsi:type="xsd:string">STRING FROM THE JAVA CLIENT</EchoCaps>
>  > </ns1:capitalizeResponse>
>  > </soapenv:Body>
>  ></soapenv:Envelope>
>  >
>  >
>  >
>  >
>  >===================
>  >FROM THE C++ CLIENT..........
>  >===================
>  >Listen Port: 8888
>  >Target Host: 127.0.0.1
>  >Target Port: 8080
>  >==== Request ====
>  >POST /file_manager/services/EchoCaps HTTP/1.1
>  >Host: 127.0.0.1
>  >Content-Type: text/xml; charset=UTF-8
>  >SOAPAction: "EchoCaps#capitalize"
>  >Content-Length: 439
>  >
>  ><?xml version='1.0' encoding='utf-8' ?>
>  ><SOAP-ENV:Envelope
>
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
>
>  > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>  > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>  > <SOAP-ENV:Body>
>  > <ns1:capitalize
>  >xmlns:ns1="http://192.168.0.103:8888/file_manager/services/EchoCaps";>
>  > <inputString xsi:type="xsd:string">Input from C++
>  >Client</inputString>
>  > </ns1:capitalize>
>  > </SOAP-ENV:Body>
>  ></SOAP-ENV:Envelope>
>  >
>  >
>  >==== Response ====
>  >HTTP/1.1 200 OK
>  >Content-Type: text/xml;charset=utf-8
>  >Transfer-Encoding: chunked
>  >Date: Fri, 28 May 2004 20:20:42 GMT
>  >Server: Apache-Coyote/1.1
>  >
>  >20d
>  ><?xml version="1.0" encoding="UTF-8"?>
>  ><soapenv:Envelope
>
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>
>  > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>  > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>  > <soapenv:Body>
>  > <ns1:capitalizeResponse
>  > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>  > xmlns:ns1="http://192.168.0.103:8888/file_manager/services/EchoCaps";>
>  > <EchoCaps xsi:type="xsd:string">INPUT FROM C++ CLIENT</EchoCaps>
>  > </ns1:capitalizeResponse>
>  > </soapenv:Body>
>  ></soapenv:Envelope>
>  >0
>  >
>  >
>  >==============
>  >
>  >On Friday 28 May 2004 12:26 pm, Ben Souther wrote:
>  >>Hello,
>  >>
>  >>I've used the WSDL2Ws tool that ships with Axis C++ to create a simple
>  >>client for a java webservice running on axis/tomcat. The webservice
>
> method
>
>  >>takes a string as it's only argument and returns the same string but in
>  >>upper case.
>  >>
>  >>The c++ method that gets generated has an extra input parameter, has a
>  >>return type of void, and doesn't seem to work.
>  >>
>  >>I tried commenting out the line with the second
>  >> "m_pCall->AddParameter.." statement.
>  >>This improved things a bit. I can now see that a call is being made.
>  >>I determined this with a System.out.println statement on the server
>  >> which shows that the string is being passed from the c++ client to the
>  >> webservice.
>  >>
>  >>After that, the app just hangs for about 10 seconds and returns with the
>  >>following message:
>  >>
>  >>execution break
>  >>m_MsgSize == 0, so return NULL
>  >>Press any key to continue
>  >>
>  >>Is Axis C++ interoperable with Axis Java?.
>  >>Do I need to tweak the WSDL to get this to work?
>  >>
>  >>If the WSDL2Ws tool isn't generating the proper c++ code, does anyone
>
> know
>
>  >>where there is an example of a working c++ client that calls an
>
> echoString
>
>  >>type of webservice that I can use as a template?
>  >>
>  >>Any help would be greatly appreciated.
>  >>
>  >>Below is a copy of all relevant files:
>  >>
>  >>====================================================
>  >>The Java WS Class:
>  >>====================================================
>  >>package filemanager.service;
>  >>public class EchoCaps{
>  >>
>  >> public String capitalize(String in){
>  >> System.out.println("Value passed in from client: " + in);
>  >> return in.toUpperCase();
>  >> }
>  >>}
>  >>
>  >>===========================================================
>  >>The WSDL generated from that class, from Axis Java running on Tomcat:
>  >>===========================================================
>  >> <wsdl:definitions
>  >>targetNamespace="http://localhost:8080/file_manager/services/EchoCaps";>
>  >>
>  >> <wsdl:message name="capitalizeRequest">
>  >><wsdl:part name="inputString" type="xsd:string"/>
>  >></wsdl:message>
>  >>
>  >> <wsdl:message name="capitalizeResponse">
>  >><wsdl:part name="EchoCaps" type="xsd:string"/>
>  >></wsdl:message>
>  >>
>  >> <wsdl:portType name="EchoCaps">
>  >>
>  >> <wsdl:operation name="capitalize" parameterOrder="inputString">
>  >><wsdl:input message="impl:capitalizeRequest" name="capitalizeRequest"/>
>  >><wsdl:output message="impl:capitalizeResponse"
>
> name="capitalizeResponse"/>
>
>  >></wsdl:operation>
>  >></wsdl:portType>
>  >>
>  >> <wsdl:binding name="EchoCapsSoapBinding" type="impl:EchoCaps">
>  >><wsdlsoap:binding style="rpc"
>  >>transport="http://schemas.xmlsoap.org/soap/http"/>
>  >>
>  >> <wsdl:operation name="capitalize">
>  >><wsdlsoap:operation soapAction=""/>
>  >>
>  >> <wsdl:input name="capitalizeRequest">
>  >><wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>  >>namespace="http://localhost:8080/file_manager/services/EchoCaps";
>  >>use="encoded"/>
>  >></wsdl:input>
>  >>
>  >> <wsdl:output name="capitalizeResponse">
>  >><wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>  >>namespace="http://localhost:8080/file_manager/services/EchoCaps";
>  >>use="encoded"/>
>  >></wsdl:output>
>  >></wsdl:operation>
>  >></wsdl:binding>
>  >>
>  >> <wsdl:service name="EchoCapsService">
>  >>
>  >> <wsdl:port binding="impl:EchoCapsSoapBinding" name="EchoCaps">
>  >><wsdlsoap:address
>  >>location="http://localhost:8080/file_manager/services/EchoCaps"/>
>  >></wsdl:port>
>  >></wsdl:service>
>  >></wsdl:definitions>
>  >>
>  >>==========================================================
>  >>The generated cpp file from running WSDL2Ws on the WSDL file above:
>  >>==========================================================
>  >>/*
>  >> * This is the Client Stub implementation file genarated by WSDL2Ws
>  >> tool. * EchoCaps.cpp: implemtation for the EchoCaps.
>  >> *
>  >> */
>  >>
>  >>#include "EchoCaps.h"
>  >>
>  >>#include <axis/server/AxisWrapperAPI.h>
>  >>
>  >>bool CallBase::bInitialized;
>  >>CallFunctions CallBase::ms_VFtable;
>  >>EchoCaps::EchoCaps()
>  >>{
>  >> m_pCall = new Call();
>  >> m_pCall->SetProtocol(APTHTTP);
> >>
> >>m_pCall->SetEndpointURI("http://192.168.0.103:8080/file_manager/services/
> >>E
>
> c
>
>  >>hoCaps"); }
>  >>
>  >>EchoCaps::~EchoCaps()
>  >>{
>  >> delete m_pCall;
>  >>}
>  >>
>  >>
>  >>/*Methods corresponding to the web service methods*/
>  >>
>  >>/*
>  >> * This method wrap the service methodcapitalize
>  >> */
>  >>void EchoCaps::capitalize(xsd__string Value0, xsd__string Value1)
>  >>{
>  >> if (AXIS_SUCCESS != m_pCall->Initialize(CPP_RPC_PROVIDER,
>
> NORMAL_CHANNEL))
>
>  >>return ;
>  >> m_pCall->SetTransportProperty(SOAPACTION_HEADER , "");
>  >> m_pCall->SetSOAPVersion(SOAP_VER_1_1);
>  >> m_pCall->SetOperation("capitalize",
>  >>"http://192.168.0.103:8080/file_manager/services/EchoCaps";);
>  >> m_pCall->AddParameter((void*)&Value0, "inputString", XSD_STRING);
>  >>
>  >>
>  >>//******************************************************************* //
>  >>After commenting out the following line, the client was able to //
>  >>successfully send the string to the webservice.
>  >> //m_pCall->AddParameter((void*)&Value1, "EchoCaps", XSD_STRING);
>  >>
>  >>//*******************************************************************
>  >>
>  >> if (AXIS_SUCCESS == m_pCall->Invoke())
>  >> {
>  >> if(AXIS_SUCCESS == m_pCall->CheckMessage("capitalizeResponse",
>  >>"http://192.168.0.103:8080/file_manager/services/EchoCaps";))
>  >> {
>  >> /*not successful*/
>  >> }
>  >>
>  >>
>  >> }
>  >> m_pCall->UnInitialize();
>  >>}
>  >>
>  >>//
>  >>// Added by me
>  >>//
>  >>void main(){
>  >> EchoCaps echoCaps;
>  >> echoCaps.capitalize("this is a string", "");
>  >>}

-- 
Ben Souther
F.W. Davison & Company, Inc.


This e-mail message, and any accompanying documents, is for the sole use of
the intended recipient(s) and may contain confidential and privileged
information.  Any unauthorized review, use, disclosure, distribution or
copying is prohibited.  If you are not the intended recipient, please
contact our office by email or by telephone at (508) 747-7261 and
immediately destroy all copies of the original message.

Reply via email to