axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aleksander Slominski <as...@cs.indiana.edu>
Subject [Fwd: AW: c++ WSDL2Ws creates an extra input parameter]
Date Tue, 01 Jun 2004 18:41:47 GMT
[forwarded to axis-c-dev from axis-user]

what is the wsdl2ws that you get?

alek

-------- Original Message --------
Subject: 	AW: c++ WSDL2Ws creates an extra input parameter
Date: 	Tue, 1 Jun 2004 19:22:05 +0200
From: 	Bochnak Filip <Filip.Bochnak@edmb.debis.com>
Reply-To: 	axis-user@ws.apache.org
To: 	'axis-user@ws.apache.org' <axis-user@ws.apache.org>



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:aslom@cs.indiana.edu]
Gesendet: Dienstag, 1. Juni 2004 17:48
An: axis-user@ws.apache.org
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 <aslom@cs.indiana.edu>
To: 	axis-user@ws.apache.org
References: 	<200405281226.11062.bsouther@fwdco.com>
<200405281647.51144.bsouther@fwdco.com>



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", "");
>>}
>>
>>
>
>
>
>
>


-- 
The best way to predict the future is to invent it - Alan Kay


-- 
The best way to predict the future is to invent it - Alan Kay



-- 
The best way to predict the future is to invent it - Alan Kay



Mime
View raw message