Tim_Arp_112576
Aug 12, 2004Nimbostratus
Handling returned parameters with SOAP and Java
Hi, I have been working on some code to basically mimic the b virtual command line. I'm trying to display the pool members status (up or down) . According to the SDK , the function is like this.
void get_member_active_states(
in SessionCredentials creds, <== CORBA Specific
in String pool_name,
in IPPortDefinition[] member_defs,
out MemberState[] member_states
);
ITCMLocalLB.Pool.wsdl
In all of the previous examples I have seen the desired result is return value. How do I retrieve out variables in soap this way.
My code goes like this
//get member stats
call.setMethodName("get_all_member_statistics");
resp = call.invoke(destURI, urn);
if (resp.generatedFault()){
Fault fault = resp.getFault();
throw new SOAPException(fault.getFaultCode(), fault.getFaultString());
} else {
MemberStatisticsEntry[] PoolMembers = (MemberStatisticsEntry[]) resp.getReturnValue().getValue();
for (int i=0; i < PoolMembers.length; i++) {
PoolParams.addElement(new Parameter("member_defs", IPPortDefinition.class,PoolMembers[i].getMember_definition(), null));
call.setParams(PoolParams);
call.setMethodName("get_member_active_states");
resp = call.invoke(destURI, urn);
//this is wrong below
MemberState[] PoolMemberState = (MemberState[]) resp.getReturnValue().getValue(); //this is wrong
String sAddress = PoolMembers[i].getMember_definition().getAddress();
long nPort = PoolMembers[i].getMember_definition().getPort();
long bits_in = PoolMembers[i].getStats().getThruput_stats().getBits_in();
long bits_out = PoolMembers[i].getStats().getThruput_stats().getBits_out();
long packets_in = PoolMembers[i].getStats().getThruput_stats().getPackets_in();
long packets_out = PoolMembers[i].getStats().getThruput_stats().getPackets_out();
long current_connection = PoolMembers[i].getStats().getConnection_stats().getCurrent_connections();
long maximum_connection = PoolMembers[i].getStats().getConnection_stats().getMaximum_connections();
long total_connection = PoolMembers[i].getStats().getConnection_stats().getTotal_connections();
out.println ("Member " + ((PoolMemberState[i].getActive_state())?"UP":"DOWN") + " {" + sAddress + ":" + nPort + "}
");
out.println ("\tbits (in, out) (" + bits_in + ", " + bits_out + ")");
out.println ("\tpackets (in, out) (" + packets_in + ", " + packets_out + ")");
out.println ("\tconnection (cur, max, tot) (" + current_connection + ", " + maximum_connection + ", " + total_connection + ")");
out.println ("
");
}
}