send_receive blocking

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

send_receive blocking

Oscar Pernas
Hi all,

Im using axis2c trunk version, over Windows 7, and I'm falling into a problem with axis2_svc_client_send_receive method.

I have a class in c++ where I'm using axis2c api. I have a method init where I made all initializations, and a method run where I made the svc_client_create.

The first time that I send a message, message is sent correctly and Iam receiving the response well. But the second time, petition is sent (I can see in wireshark) but I dont have any response (but is received because I see in wireshark), axiom node returned by send_receive is null.

My code is:

void send(){

axiom_node_t* payload=buildWSMessage(env,message);
if (payload){
  axiom_node_t* retNode=axis2_svc_client_send_receive(svc_client, env, payload);
if (retNode){
extractAndSend(retNode);
}
}
}

Im only calling init() and run() one time, and after that I am allways calling to this send method. What should I do if i want to use the previous method twice? shoud I have to free some structures of svc_client? any help would be appreciated!

regards

--
Óscar Pernas Plaza.
Reply | Threaded
Open this post in threaded view
|

AW: send_receive blocking

Stadelmann Josef-2

Hi Oscar

what states the servers log if any created?

you're saying that the second send() goes out,

is it received at the servers end?

is it received at the servers method end?

if yes what does the method do with the second request?

will it just return the payload as an echo too?

In this case can you see the incoming second response as soap/xml data on the wire.

 

Also for ease of use, unless really required,

I would suggest to use TCP Monitor to watch the wire transfer.

You can see much better the soap/xml traffic on the wire than with Wireshark.

Nothing against Wireshark, both a very OK.

Josef

 

Von: Oscar Pernas [mailto:[hidden email]]
Gesendet: Dienstag, 26. Februar 2013 12:54
An: [hidden email]
Betreff: send_receive blocking

 

Hi all,

 

Im using axis2c trunk version, over Windows 7, and I'm falling into a problem with axis2_svc_client_send_receive method.

 

I have a class in c++ where I'm using axis2c api. I have a method init where I made all initializations, and a method run where I made the svc_client_create.

 

The first time that I send a message, message is sent correctly and Iam receiving the response well. But the second time, petition is sent (I can see in wireshark) but I dont have any response (but is received because I see in wireshark), axiom node returned by send_receive is null.

 

My code is:

 

void send(){

 

axiom_node_t* payload=buildWSMessage(env,message);

if (payload){

    axiom_node_t* retNode=axis2_svc_client_send_receive(svc_client, env, payload);

            if (retNode){

                extractAndSend(retNode);

            }

}

}

 

Im only calling init() and run() one time, and after that I am allways calling to this send method. What should I do if i want to use the previous method twice? shoud I have to free some structures of svc_client? any help would be appreciated!

 

regards

 

--
Óscar Pernas Plaza.

Reply | Threaded
Open this post in threaded view
|

Re: send_receive blocking

Oscar Pernas
Hi, I think that I've solved it. To see what I'm receiving I had this code for every response:

//xml_writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_FALSE, AXIS2_FALSE,
// AXIS2_XML_PARSER_TYPE_BUFFER);
//om_output = axiom_output_create(env, xml_writer);

//if (messageNode){
// axiom_node_serialize(messageNode, env, om_output);
//}else{
// axiom_node_serialize(genericNode, env, om_output);
//}
//buffer = (axis2_char_t *) axiom_xml_writer_get_xml(xml_writer, env);
////AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "\nSending OM node in XML : %s \n",
////                buffer);
//if (om_output){
// axiom_output_free(om_output, env);
// om_output = NULL;
//}

After commented it, I can send more than one message, and everything seems to go fine. Any idea of the reason?

I've given up myself in trying to get an asynchronous communication (not blocking) working. OnError callback ends in a crash. Have anyone tested it with trunk code? I've applied Alex Mantaut patch but doesnt work at all.

Regards



2013/2/26 Stadelmann Josef <[hidden email]>

Hi Oscar

what states the servers log if any created?

you're saying that the second send() goes out,

is it received at the servers end?

is it received at the servers method end?

if yes what does the method do with the second request?

will it just return the payload as an echo too?

In this case can you see the incoming second response as soap/xml data on the wire.

 

Also for ease of use, unless really required,

I would suggest to use TCP Monitor to watch the wire transfer.

You can see much better the soap/xml traffic on the wire than with Wireshark.

Nothing against Wireshark, both a very OK.

Josef

 

Von: Oscar Pernas [mailto:[hidden email]]
Gesendet: Dienstag, 26. Februar 2013 12:54
An: [hidden email]
Betreff: send_receive blocking

 

Hi all,

 

Im using axis2c trunk version, over Windows 7, and I'm falling into a problem with axis2_svc_client_send_receive method.

 

I have a class in c++ where I'm using axis2c api. I have a method init where I made all initializations, and a method run where I made the svc_client_create.

 

The first time that I send a message, message is sent correctly and Iam receiving the response well. But the second time, petition is sent (I can see in wireshark) but I dont have any response (but is received because I see in wireshark), axiom node returned by send_receive is null.

 

My code is:

 

void send(){

 

axiom_node_t* payload=buildWSMessage(env,message);

if (payload){

    axiom_node_t* retNode=axis2_svc_client_send_receive(svc_client, env, payload);

            if (retNode){

                extractAndSend(retNode);

            }

}

}

 

Im only calling init() and run() one time, and after that I am allways calling to this send method. What should I do if i want to use the previous method twice? shoud I have to free some structures of svc_client? any help would be appreciated!

 

regards

 

--
Óscar Pernas Plaza.




--
Óscar Pernas Plaza.
Reply | Threaded
Open this post in threaded view
|

Re: send_receive blocking

Alex Mantaut
Hi Oscar,
              Yeah, there are many problems with asynchronous communication in Axis2/C... Can you send me a sample in which the patch fails, and explain how it fails, so I can try to fix it?

Best Regards
Alex



On Tue, Feb 26, 2013 at 11:44 AM, Oscar Pernas <[hidden email]> wrote:
Hi, I think that I've solved it. To see what I'm receiving I had this code for every response:

//xml_writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_FALSE, AXIS2_FALSE,
// AXIS2_XML_PARSER_TYPE_BUFFER);
//om_output = axiom_output_create(env, xml_writer);

//if (messageNode){
// axiom_node_serialize(messageNode, env, om_output);
//}else{
// axiom_node_serialize(genericNode, env, om_output);
//}
//buffer = (axis2_char_t *) axiom_xml_writer_get_xml(xml_writer, env);
////AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "\nSending OM node in XML : %s \n",
////                buffer);
//if (om_output){
// axiom_output_free(om_output, env);
// om_output = NULL;
//}

After commented it, I can send more than one message, and everything seems to go fine. Any idea of the reason?

I've given up myself in trying to get an asynchronous communication (not blocking) working. OnError callback ends in a crash. Have anyone tested it with trunk code? I've applied Alex Mantaut patch but doesnt work at all.

Regards



2013/2/26 Stadelmann Josef <[hidden email]>

Hi Oscar

what states the servers log if any created?

you're saying that the second send() goes out,

is it received at the servers end?

is it received at the servers method end?

if yes what does the method do with the second request?

will it just return the payload as an echo too?

In this case can you see the incoming second response as soap/xml data on the wire.

 

Also for ease of use, unless really required,

I would suggest to use TCP Monitor to watch the wire transfer.

You can see much better the soap/xml traffic on the wire than with Wireshark.

Nothing against Wireshark, both a very OK.

Josef

 

Von: Oscar Pernas [mailto:[hidden email]]
Gesendet: Dienstag, 26. Februar 2013 12:54
An: [hidden email]
Betreff: send_receive blocking

 

Hi all,

 

Im using axis2c trunk version, over Windows 7, and I'm falling into a problem with axis2_svc_client_send_receive method.

 

I have a class in c++ where I'm using axis2c api. I have a method init where I made all initializations, and a method run where I made the svc_client_create.

 

The first time that I send a message, message is sent correctly and Iam receiving the response well. But the second time, petition is sent (I can see in wireshark) but I dont have any response (but is received because I see in wireshark), axiom node returned by send_receive is null.

 

My code is:

 

void send(){

 

axiom_node_t* payload=buildWSMessage(env,message);

if (payload){

    axiom_node_t* retNode=axis2_svc_client_send_receive(svc_client, env, payload);

            if (retNode){

                extractAndSend(retNode);

            }

}

}

 

Im only calling init() and run() one time, and after that I am allways calling to this send method. What should I do if i want to use the previous method twice? shoud I have to free some structures of svc_client? any help would be appreciated!

 

regards

 

--
Óscar Pernas Plaza.




--
Óscar Pernas Plaza.



--
--
Mantaut Alex
Intraway Corp. 

+54 (11) 6040-4000  
MSN:
[hidden email]


Visit our website at http://www.intraway.com
Proud to be an ISO 9001:2008 certified company