Google with Axis C++
Hi I am trying to use Axis 1.5 Alpha to access the Google Web Service.The programs exits with the following exception DLOPEN FAILED in loading channel library.On doing an strace I got the following output. open("/usr/lib/libhttp_channel.so", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 munmap(0x40677000, 22733) = 0 futex(0x401c64b4, FUTEX_WAKE, 2147483647) = 0 futex(0x402089cc, FUTEX_WAKE, 2147483647) = 0 munmap(0x40664000, 76820) = 0 munmap(0x4034d000, 99396) = 0 munmap(0x4036c000, 3111548) = 0 write(1, "AXIS_FAIL-1\n", 12AXIS_FAIL-1 The libhttp_channel.so file is not found in the $AXISCPP_DEPLOY/lib directory too. The program seems to be looking for the libhttp_channel.so in various directories ( I have not included the complete output here).On looking up the axiscpp.conf file I found. #Channel_HTTP_SSL:Secure Transport channel in axis3 transport #Channel_HTTP:Transport channel in axis3 transport The axiscpp.conf also mentions that some of this functionality has not been implemented.Is the program looking for a library which has not been implemented? Regards Krishna http://uic.edu/~krajag2
Re: server shutdown of long lived connections
Moved this discussion to dev list where it should've been - sorry. -- IBM Tivoli Access Manager Development Gold Coast Development Lab, Australia +61-7-5552-4001 phone +61-7-5571-0420 fax
Fault error
Hi, I am experiencing a problem and I would like to know if someone can help me, please. I defined in my wsdl a fault message like this: And I use it in an operation like this: Doing this AxisServiceException.hpp tries to include xsd__string.hpp (that is not found by the compiler). Also, I get the following error compiling the code: FilePortTypeWrapper.cpp: In member function `int FilePortTypeWrapper::buyProduct(void*)': FilePortTypeWrapper.cpp:92: error: `Axis_Serialize_xsd__string' undeclared (first use this function) FilePortTypeWrapper.cpp:92: error: (Each undeclared identifier is reported only once for each function it appears in.) FilePortTypeWrapper.cpp:93: error: `Axis_Delete_xsd__string' undeclared (first use this function) FilePortTypeWrapper.cpp:93: error: `Axis_URI_xsd__string' undeclared (first use this function) Can someone help me please? Thanks, Victor.
RE: Help with using axis C++
Hi, As I said before you can ignore the attachment support warnings. You can also ignore the anonymous type warnings. The ">" prefix is annoying- this is where I revert back to "we don't support rpc as well as doc/lit". These sorts of problems came when we upgraded the pre-reqs to Axis Java beta - we fixed tem in doc lit but evidently missed some in rpc ! As I said before is it possible for you to move to doc/lit ? "Kon Kam King, France" <[EMAIL PROTECTED]> 15/03/2005 15:38 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ John, Things are better with 1.4 & 1.5. I don't get the error I had with 1.3. But I am getting a warning: C:\axis-c-1.5.0\lib\axis\wsdl2ws_complex>java -classpath .\wsdl2ws.jar;.;%CLASSP ATH% org.apache.axis.wsdl.wsdl2ws.WSDL2Ws copieCalculator.wsdl -o./ClientOut -lc ++ -sclient 15 mars 2005 16:17:26 org.apache.axis.utils.JavaUtils isAttachmentSupported ATTENTION: Unable to find required classes (javax.activation.DataHandler and jav ax.mail.internet.MimeMultipart). Attachment support is disabled. ignoring anonymous type >CONTROLXMLSTART Code generation completed. The generated code is not quite right, as there does not seem to be declaration of my complex type, and the name of the type used in the call is prfixed ith '>', >CONTROLXMLSTART I thing there is some bug existing.I am attaching a run with 1.5 (nightly build). Thanks for your help. De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : mardi 15 mars 2005 10:24 À : Apache AXIS C User List Objet : RE: Help with using axis C++ Ah ! axis 1.3 is quite an old version and we don't really support that. Can you upgrade to either 1.4 or preferably 1.5 beta (you can just take a nightly build from here - http://cvs.apache.org/dist/axis/nightly/) Please be aware that rpc/encoded is not supported as well as document literal. Is this a situation where you need to have rpc/encoded or could you move to doc/lit? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:52 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ Here is my classpath: C:\j2sdk1.4.1_01\jre\lib;C:\axis-1_2RC2\axis-1_2RC2\lib\axis.jar;C:\axis-1_2RC2\ axis-1_2RC2\lib\commons-discovery.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\commons-log ging.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\jaxrpc.jar;C:\axis-1_2RC2\axis-1_2RC2\li b\saaj.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\wsdl4j.jar;C:\axis-1_2RC2\axis-1_2RC2\ lib\xml-apis.jar I am running Axis-C 1.3. De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : lundi 14 mars 2005 19:47 À : Apache AXIS C User List Objet : RE: Help with using axis C++ This seems to work fine for me - I get the attached files produced . My cmd line is -> set WSDL2WsJar=%builddir%\obj\classes\wsdl2ws.jar set axisJar=%PreReqsDir%\java\axis.jar set commonsdiscoveryJar=%PreReqsDir%\java\commons-discovery.jar set commonsloggingjar=%PreReqsDir%\java\commons-logging.jar set jaxrpcjar=%PreReqsDir%\java\jaxrpc.jar set saajjar=%PreReqsDir%\java\saaj.jar set wsdl4jjar=%PreReqsDir%\java\wsdl4j.jar rem set WSDLFile=%baseWSDLPath%\%1 set WSDLFile=%1 set foo=%wsdl2wsjar%;%axisJar%;%commonsdiscoveryjar%;%commonsloggingjar%;%jaxrpcjar%;%saajjar%;%wsdl4jjar% java -classpath %foo% org.apache.axis.wsdl.wsdl2ws.WSDL2Ws -sclient -oWSDLOutput %WSDLFile% you sure you got the right level of pre-reqs? Where did you get them from? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:13 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ Here it is: De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : lundi 14 mars 2005 19:09 À : Apache AXIS C User List Objet : RE: Help with using axis C++ I think this should work but can you send us the WSDL to try? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:00 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ When I remove the type schema declaration from my WSDL, WSDL2Ws runs to completion. Is complex type allowed wih WSDL2Ws? I do see an example of a WSDL in the samples library with doclitfault. Can somebody help me? De : Kon Kam King, France Envoyé : lundi 14 mars 2005 16:10 À : 'Apache AXIS C User List' Objet : RE: Help with using axis C++ I need to pass a complex-type parameter from a C++ client to a soap server, for example user1 pass parameters How is this done in Axis-c? I tried to use WSDL2Ws to try generating the client stubs, with a WSDL with complex-type, and soap/literal binding, but got an exception: ATTENTION: Unable to find required classes (javax.activation.DataHandler and jav ax.mail.internet.MimeMultipart). Attachment support is disabled. java.lang.NoSuchMethod
Cannot deserialize element
Hi, I wrote a simple client against an axis (java) server. the wsdl file is located at http://soap1.bind.ca/bind.wsdl here is my code: #include "BINDSOAPPort.hpp" #include #include int main(int argc,char **argv) { try { BINDSOAPPort port; cout << port.isServiceAlive() << endl; cout << port.getSoftwareVersion() << endl; } catch(AxisException& e) { printf("Exception : %s\n", e.what()); printf("Exception Code: %d\n", e.getExceptionCode()); } catch(exception& e) { printf("Unknown exception has occured\n"); } catch(...) { printf("Unknown exception has occured\n"); } return 0; } here is the results: ./bindsoap 0 Exception : Cannot deserialize the requested element Exception Code: 70 here is the request: POST /bindsoap/services/BINDSOAP HTTP/1.1 Host: localhost:9010 Content-Type: text/xml; charset=UTF-8 SOAPAction: "urn:#getSoftwareVersion" Content-Length: 349 http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";> here is the response: HTTP/1.1 200 OK Set-Cookie: JSESSIONID=6DF554A70E0DC8E2CC54804D52F4DDBC; Path=/bindsoap Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Tue, 15 Mar 2005 15:55:59 GMT Server: Apache-Coyote/1.1 1dd http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns1="urn:BINDSOAP">No Version Assigned 0 Any help would be greatly appreciated, Marc Dumontier
RE: Help with using axis C++
John, Things are better with 1.4 & 1.5. I don't get the error I had with 1.3. But I am getting a warning: C:\axis-c-1.5.0\lib\axis\wsdl2ws_complex>java -classpath .\wsdl2ws.jar;.;%CLASSPATH% org.apache.axis.wsdl.wsdl2ws.WSDL2Ws copieCalculator.wsdl -o./ClientOut -lc++ -sclient15 mars 2005 16:17:26 org.apache.axis.utils.JavaUtils isAttachmentSupportedATTENTION: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.ignoring anonymous type >CONTROLXMLSTART Code generation completed. The generated code is not quite right, as there does not seem to be declaration of my complex type, and the name of the type used in the call is prfixed ith '>', >CONTROLXMLSTART I thing there is some bug existing.I am attaching a run with 1.5 (nightly build). Thanks for your help. De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : mardi 15 mars 2005 10:24À : Apache AXIS C User ListObjet : RE: Help with using axis C++ Ah ! axis 1.3 is quite an old version and we don't really support that. Can you upgrade to either 1.4 or preferably 1.5 beta (you can just take a nightly build from here - http://cvs.apache.org/dist/axis/nightly/) Please be aware that rpc/encoded is not supported as well as document literal. Is this a situation where you need to have rpc/encoded or could you move to doc/lit? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:52 Please respond to"Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ Here is my classpath: C:\j2sdk1.4.1_01\jre\lib;C:\axis-1_2RC2\axis-1_2RC2\lib\axis.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\commons-discovery.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\commons-logging.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\jaxrpc.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\saaj.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\wsdl4j.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\xml-apis.jar I am running Axis-C 1.3. De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : lundi 14 mars 2005 19:47À : Apache AXIS C User ListObjet : RE: Help with using axis C++This seems to work fine for me - I get the attached files produced . My cmd line is -> set WSDL2WsJar=%builddir%\obj\classes\wsdl2ws.jar set axisJar=%PreReqsDir%\java\axis.jar set commonsdiscoveryJar=%PreReqsDir%\java\commons-discovery.jar set commonsloggingjar=%PreReqsDir%\java\commons-logging.jar set jaxrpcjar=%PreReqsDir%\java\jaxrpc.jar set saajjar=%PreReqsDir%\java\saaj.jar set wsdl4jjar=%PreReqsDir%\java\wsdl4j.jar rem set WSDLFile=%baseWSDLPath%\%1 set WSDLFile=%1 set foo=%wsdl2wsjar%;%axisJar%;%commonsdiscoveryjar%;%commonsloggingjar%;%jaxrpcjar%;%saajjar%;%wsdl4jjar% java -classpath %foo% org.apache.axis.wsdl.wsdl2ws.WSDL2Ws -sclient -oWSDLOutput %WSDLFile% you sure you got the right level of pre-reqs? Where did you get them from? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:13 Please respond to"Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ Here it is: De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : lundi 14 mars 2005 19:09À : Apache AXIS C User ListObjet : RE: Help with using axis C++I think this should work but can you send us the WSDL to try? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:00 Please respond to"Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ When I remove the type schema declaration from my WSDL, WSDL2Ws runs to completion. Is complex type allowed wih WSDL2Ws? I do see an example of a WSDL in the samples library with doclitfault. Can somebody help me? De : Kon Kam King, France Envoyé : lundi 14 mars 2005 16:10À : 'Apache AXIS C User List'Objet : RE: Help with using axis C++I need to pass a complex-type parameter from a C++ client to a soap server, for example user1 pass parameters How is this done in Axis-c? I tried to use WSDL2Ws to try generating the client stubs, with a WSDL with complex-
RE: server shutdown of long lived connections
On deciding whether to put in 1.5, we could apply the patch and do the tests before commit for side effects, provided the diff is against the latest CVS. This looks to me as if it is a moderate change (as far as amount of changes are concerned) Hence I believe we could manage. Thanks, Samisa… -Original Message- From: John Hawkins [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 15, 2005 5:26 PM To: Apache AXIS C User List Subject: Re: server shutdown of long lived connections Great ! Can you implement and send diffs? Perhaps this is too big a change at this late stage in 1.5 beta - thoughts anyone? Tim Bartley <[EMAIL PROTECTED]> 11/03/2005 23:07 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject server shutdown of long lived connections HTTP 1.1 (and 1.0 with Connection: Keep-Alive) permits the client to re-use a connection for multiple requests and Axis makes use of this. However, if the client hasn't sent a request on that connection for a while the server will typlically shutdown the connection. One server I've seen (WebSphere) does this simply by sending a FIN from it's end. This means that the client->server half of the connection is still open so the next client send (*m_pActiveChannel << this->getHTTPHeaders() in HTTPTransport::flushOutput) succeeds. The server responds to this by aborting the connection but it's not until the the next send (*m_pActiveChannel << this->m_strBytesToSend.c_str()) that an IO error occurs and ultimately an exception is thrown to the client application. Now this behaviour is a property of the transport so I think Axis should detect that the server side has closed the connection and resend the request. This should always be OK because an IO error on any part of the send must mean the request has not been completely sent and therefore re-sending the request should not be harmful. So I think HTTPTransport::flushOutput should have some logic like: try { *m_pActiveChannel << this->getHTTPHeaders(); *m_pActiveChannel << this->strBytesToSend.c_str(); } catch (HTTPTransportException& e) { if (didn't just re-open the connection) { m_pActiveChannel->close(); m_pActiveChannel->open(); *m_pActiveChannel << this->getHTTPHeaders(); *m_pActiveChannel << this->strBytesToSend.c_str(); } else { throw; } } We can do slightly better than this by trying to detect that the server has closed the connection before sending at all - this saves the network bandwidth of the first packet and saves us a bit of computation. This can be done approximately as follows: bool reopenConnection; fd_set_t read_fds; fd_set_t except_fds; FD_ZERO(&read_fds); FD_ZERO(&except_fds); FD_SET(socket, &read_fds); FD_SET(socket, &except_fds); timepec_t t = {0}; int result = select(FD_SETSIZE, &read_fds, NULL, &except_fds, &t); if (result < 0) { throw something; } else if (result == 0) { /* socket not readable - therefore not closed - ok to send */ reopenConnection = false; } else { /* socket readable or in error - see if data available */ unsigned char byte; result = recv(socket, &byte, 1, MSG_PEEK); if (result == 0) { /* socket shutdown by remote end */ reopenConnection = true; } else if (result < 0) { if (errno == ECONNRESET) { reopenConnection = true; } else { /* Possibly this is too aggressive and reopenConnection should be set to true irrespective of the errno value */ throw something; } } } return reopenConnection I suggest the above logic be encapsulated in the channels and accessed through the IChannel interface in flushOutput as something like: bool connectionJustReopened = false; if (m_bReopenConnection || m_pActiveChannel->connectionReopenRequired()) { m_pActiveChannel->close(); m_pActiveChannel->open(); connectionJustReopened = true; } bool retry; do { retry = false; try { *m_pActiveChannel << this->getHTTPHeaders(); *m_pActiveChannel << this->strDataBytes.c_str(); } catch (HTTPTransportException& e) { if (!connectionJustReopened) { m_pActiveChannel->close(); m_pActiveChannel->open(); retry = true; connectionJustReopened = true; } else {
Re: server shutdown of long lived connections
Great ! Can you implement and send diffs? Perhaps this is too big a change at this late stage in 1.5 beta - thoughts anyone? Tim Bartley <[EMAIL PROTECTED]> 11/03/2005 23:07 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject server shutdown of long lived connections HTTP 1.1 (and 1.0 with Connection: Keep-Alive) permits the client to re-use a connection for multiple requests and Axis makes use of this. However, if the client hasn't sent a request on that connection for a while the server will typlically shutdown the connection. One server I've seen (WebSphere) does this simply by sending a FIN from it's end. This means that the client->server half of the connection is still open so the next client send (*m_pActiveChannel << this->getHTTPHeaders() in HTTPTransport::flushOutput) succeeds. The server responds to this by aborting the connection but it's not until the the next send (*m_pActiveChannel << this->m_strBytesToSend.c_str()) that an IO error occurs and ultimately an exception is thrown to the client application. Now this behaviour is a property of the transport so I think Axis should detect that the server side has closed the connection and resend the request. This should always be OK because an IO error on any part of the send must mean the request has not been completely sent and therefore re-sending the request should not be harmful. So I think HTTPTransport::flushOutput should have some logic like: try { *m_pActiveChannel << this->getHTTPHeaders(); *m_pActiveChannel << this->strBytesToSend.c_str(); } catch (HTTPTransportException& e) { if (didn't just re-open the connection) { m_pActiveChannel->close(); m_pActiveChannel->open(); *m_pActiveChannel << this->getHTTPHeaders(); *m_pActiveChannel << this->strBytesToSend.c_str(); } else { throw; } } We can do slightly better than this by trying to detect that the server has closed the connection before sending at all - this saves the network bandwidth of the first packet and saves us a bit of computation. This can be done approximately as follows: bool reopenConnection; fd_set_t read_fds; fd_set_t except_fds; FD_ZERO(&read_fds); FD_ZERO(&except_fds); FD_SET(socket, &read_fds); FD_SET(socket, &except_fds); timepec_t t = {0}; int result = select(FD_SETSIZE, &read_fds, NULL, &except_fds, &t); if (result < 0) { throw something; } else if (result == 0) { /* socket not readable - therefore not closed - ok to send */ reopenConnection = false; } else { /* socket readable or in error - see if data available */ unsigned char byte; result = recv(socket, &byte, 1, MSG_PEEK); if (result == 0) { /* socket shutdown by remote end */ reopenConnection = true; } else if (result < 0) { if (errno == ECONNRESET) { reopenConnection = true; } else { /* Possibly this is too aggressive and reopenConnection should be set to true irrespective of the errno value */ throw something; } } } return reopenConnection I suggest the above logic be encapsulated in the channels and accessed through the IChannel interface in flushOutput as something like: bool connectionJustReopened = false; if (m_bReopenConnection || m_pActiveChannel->connectionReopenRequired()) { m_pActiveChannel->close(); m_pActiveChannel->open(); connectionJustReopened = true; } bool retry; do { retry = false; try { *m_pActiveChannel << this->getHTTPHeaders(); *m_pActiveChannel << this->strDataBytes.c_str(); } catch (HTTPTransportException& e) { if (!connectionJustReopened) { m_pActiveChannel->close(); m_pActiveChannel->open(); retry = true; connectionJustReopened = true; } else { throw; } } } while (retry); Even if we implement a connectionReopenRequired interface we still need to re-open on IO error from the send because there is a race condition between when we test this and actually send the request - the connection ReopenRequired interface is really just an optimization. What do you think? Cheers, Tim -- IBM Tivoli Access Manager Development Gold Coast Development Lab, Australia +61-7-5552-4001 phone +61-7-5571-0420 fax
RE: Help with using axis C++
Ah ! axis 1.3 is quite an old version and we don't really support that. Can you upgrade to either 1.4 or preferably 1.5 beta (you can just take a nightly build from here - http://cvs.apache.org/dist/axis/nightly/) Please be aware that rpc/encoded is not supported as well as document literal. Is this a situation where you need to have rpc/encoded or could you move to doc/lit? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:52 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ Here is my classpath: C:\j2sdk1.4.1_01\jre\lib;C:\axis-1_2RC2\axis-1_2RC2\lib\axis.jar;C:\axis-1_2RC2\ axis-1_2RC2\lib\commons-discovery.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\commons-log ging.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\jaxrpc.jar;C:\axis-1_2RC2\axis-1_2RC2\li b\saaj.jar;C:\axis-1_2RC2\axis-1_2RC2\lib\wsdl4j.jar;C:\axis-1_2RC2\axis-1_2RC2\ lib\xml-apis.jar I am running Axis-C 1.3. De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : lundi 14 mars 2005 19:47 À : Apache AXIS C User List Objet : RE: Help with using axis C++ This seems to work fine for me - I get the attached files produced . My cmd line is -> set WSDL2WsJar=%builddir%\obj\classes\wsdl2ws.jar set axisJar=%PreReqsDir%\java\axis.jar set commonsdiscoveryJar=%PreReqsDir%\java\commons-discovery.jar set commonsloggingjar=%PreReqsDir%\java\commons-logging.jar set jaxrpcjar=%PreReqsDir%\java\jaxrpc.jar set saajjar=%PreReqsDir%\java\saaj.jar set wsdl4jjar=%PreReqsDir%\java\wsdl4j.jar rem set WSDLFile=%baseWSDLPath%\%1 set WSDLFile=%1 set foo=%wsdl2wsjar%;%axisJar%;%commonsdiscoveryjar%;%commonsloggingjar%;%jaxrpcjar%;%saajjar%;%wsdl4jjar% java -classpath %foo% org.apache.axis.wsdl.wsdl2ws.WSDL2Ws -sclient -oWSDLOutput %WSDLFile% you sure you got the right level of pre-reqs? Where did you get them from? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:13 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ Here it is: De : John Hawkins [mailto:[EMAIL PROTECTED] Envoyé : lundi 14 mars 2005 19:09 À : Apache AXIS C User List Objet : RE: Help with using axis C++ I think this should work but can you send us the WSDL to try? "Kon Kam King, France" <[EMAIL PROTECTED]> 14/03/2005 18:00 Please respond to "Apache AXIS C User List" To "Apache AXIS C User List" cc Subject RE: Help with using axis C++ When I remove the type schema declaration from my WSDL, WSDL2Ws runs to completion. Is complex type allowed wih WSDL2Ws? I do see an example of a WSDL in the samples library with doclitfault. Can somebody help me? De : Kon Kam King, France Envoyé : lundi 14 mars 2005 16:10 À : 'Apache AXIS C User List' Objet : RE: Help with using axis C++ I need to pass a complex-type parameter from a C++ client to a soap server, for example user1 pass parameters How is this done in Axis-c? I tried to use WSDL2Ws to try generating the client stubs, with a WSDL with complex-type, and soap/literal binding, but got an exception: ATTENTION: Unable to find required classes (javax.activation.DataHandler and jav ax.mail.internet.MimeMultipart). Attachment support is disabled. java.lang.NoSuchMethodError: org.apache.axis.wsdl.symbolTable.SchemaUtils.getUni onNode(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node; at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.jav a:953) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.jav a:1092) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.jav a:1092) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.jav a:1092) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.jav a:1092) at org.apache.axis.wsdl.symbolTable.SymbolTable.populateTypes(SymbolTabl e.java:895) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav a:693) at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:531 ) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav a:506) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav a:483) at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:356) at java.lang.Thread.run(Thread.java:536) org.apache.axis.wsdl.wsdl2ws.WrapperFault: the service does not exists at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.getServiceEntry(WSDL2Ws.java:523 ) at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.perprocess(WSDL2Ws.java:121) at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.genarateWrappers(WSDL2Ws.java:46 8) at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.main(WSDL2Ws.java:805) Code generation failed. Please see errors above. I look at the doc/lit examples in the samples but there are no WSDL. How was the wrappers in these examples generated?