You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "zhanghongbin (JIRA)" <ax...@ws.apache.org> on 2005/06/23 05:31:12 UTC
[jira] Created: (AXIS-2081) use SOAPEnvelope.getChildElements() get multi SOAPBody objects
use SOAPEnvelope.getChildElements() get multi SOAPBody objects
--------------------------------------------------------------
Key: AXIS-2081
URL: http://issues.apache.org/jira/browse/AXIS-2081
Project: Apache Axis
Type: Bug
Versions: 1.1
Environment: windows xp
java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)
Reporter: zhanghongbin
When I use the SOAPEnvelope.getChildElements() to get all the child nodes of the SOAPEnvelope, what i expected is that
the only header and the only body. But i got the followed:
EnvelopeHeader 32392776 class org.apache.axis.message.SOAPHeader
Body 4729123 class org.apache.axis.message.SOAPBody
Body 25488452 class org.apache.axis.message.SOAPBody
Body 25488452 class org.apache.axis.message.SOAPBody
We can see that the SOAPEnvelope has two different objects of type class org.apache.axis.message.SOAPBody and two same references
tos Body 25488452.
According to the apidocs of SOAPEnvelope that an SOAPEnvelope can have the only one SOAPBody object. So is there something wrong
in my code or the implementions????
thanks
sincerely
attachement:(my test code)
import org.apache.axis.MessageContext;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import java.util.Iterator;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPElement;
public class CalcClient
{
public static String getSubValueNonRecursive(SOAPElement sel){
String ret = "";
//ret += sel.getElementName().getLocalName() + sel.getValue() + "\n";
ret += sel.getElementName().getLocalName();
for(Iterator it = sel.getChildElements();it.hasNext();){
SOAPElement se = (SOAPElement)it.next();
ret += se.getElementName().getLocalName() + " " + se.hashCode() + " " + se.getClass() + "\n";
}
return ret;
}
public static void main(String [] args){
try{
// Options options = new Options(args);
String endpoint = "http://localhost:8081/axis/Calculator.jws";
// args = options.getRemainingArgs();
String method = "add";
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("",method));
call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
call.setReturnType( XMLType.XSD_INT );
Object[] obj = new Object [] { i1, i2 };
Integer ret = (Integer) call.invoke(obj);
MessageContext mct = call.getMessageContext();
SOAPEnvelope se = mct.getMessage().getSOAPPart().getEnvelope();
String value = getSubValueNonRecursive(se);
System.out.println(value);
}catch(Exception e){
e.printStackTrace();
}
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Commented: (AXIS-2081) use SOAPEnvelope.getChildElements() get multi SOAPBody objects
Posted by "Venkat Reddy (JIRA)" <ax...@ws.apache.org>.
[ http://issues.apache.org/jira/browse/AXIS-2081?page=comments#action_12314672 ]
Venkat Reddy commented on AXIS-2081:
------------------------------------
Couldn't reproduce the issue. I've deployed samples\userguide\example2\Calulator.java and ran your test case.
I got the following output
--------------------------------------------------------
C:\dev2\runjava>ant run -Djc=samples.userguide.example2.CalcClient
Buildfile: build.xml
run:
[java] EnvelopeHeader 24417480 class org.apache.axis.message.SOAPHeader
[java] Body 13884241 class org.apache.axis.message.SOAPBody
BUILD SUCCESSFUL
Total time: 2 seconds
--------------------------------------------------------
-- venkat
> use SOAPEnvelope.getChildElements() get multi SOAPBody objects
> --------------------------------------------------------------
>
> Key: AXIS-2081
> URL: http://issues.apache.org/jira/browse/AXIS-2081
> Project: Apache Axis
> Type: Bug
> Versions: 1.1
> Environment: windows xp
> java version "1.5.0_01"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
> Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)
> Reporter: zhanghongbin
> Assignee: Venkat Reddy
>
> When I use the SOAPEnvelope.getChildElements() to get all the child nodes of the SOAPEnvelope, what i expected is that
> the only header and the only body. But i got the followed:
> EnvelopeHeader 32392776 class org.apache.axis.message.SOAPHeader
> Body 4729123 class org.apache.axis.message.SOAPBody
> Body 25488452 class org.apache.axis.message.SOAPBody
> Body 25488452 class org.apache.axis.message.SOAPBody
> We can see that the SOAPEnvelope has two different objects of type class org.apache.axis.message.SOAPBody and two same references
> tos Body 25488452.
> According to the apidocs of SOAPEnvelope that an SOAPEnvelope can have the only one SOAPBody object. So is there something wrong
> in my code or the implementions????
> thanks
> sincerely
> attachement:(my test code)
> import org.apache.axis.MessageContext;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.encoding.XMLType;
> import org.apache.axis.utils.Options;
> import javax.xml.namespace.QName;
> import javax.xml.rpc.ParameterMode;
> import java.util.Iterator;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.SOAPElement;
> public class CalcClient
> {
> public static String getSubValueNonRecursive(SOAPElement sel){
> String ret = "";
> //ret += sel.getElementName().getLocalName() + sel.getValue() + "\n";
> ret += sel.getElementName().getLocalName();
> for(Iterator it = sel.getChildElements();it.hasNext();){
> SOAPElement se = (SOAPElement)it.next();
> ret += se.getElementName().getLocalName() + " " + se.hashCode() + " " + se.getClass() + "\n";
> }
> return ret;
> }
> public static void main(String [] args){
> try{
> // Options options = new Options(args);
> String endpoint = "http://localhost:8081/axis/Calculator.jws";
> // args = options.getRemainingArgs();
> String method = "add";
> Integer i1 = new Integer(1);
> Integer i2 = new Integer(2);
> Service service = new Service();
> Call call = (Call) service.createCall();
> call.setTargetEndpointAddress( new java.net.URL(endpoint) );
> call.setOperationName(new QName("",method));
> call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
> call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
> call.setReturnType( XMLType.XSD_INT );
> Object[] obj = new Object [] { i1, i2 };
> Integer ret = (Integer) call.invoke(obj);
> MessageContext mct = call.getMessageContext();
>
> SOAPEnvelope se = mct.getMessage().getSOAPPart().getEnvelope();
> String value = getSubValueNonRecursive(se);
> System.out.println(value);
> }catch(Exception e){
> e.printStackTrace();
> }
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Assigned: (AXIS-2081) use SOAPEnvelope.getChildElements() get multi SOAPBody objects
Posted by "Venkat Reddy (JIRA)" <ax...@ws.apache.org>.
[ http://issues.apache.org/jira/browse/AXIS-2081?page=all ]
Venkat Reddy reassigned AXIS-2081:
----------------------------------
Assign To: Venkat Reddy
> use SOAPEnvelope.getChildElements() get multi SOAPBody objects
> --------------------------------------------------------------
>
> Key: AXIS-2081
> URL: http://issues.apache.org/jira/browse/AXIS-2081
> Project: Apache Axis
> Type: Bug
> Versions: 1.1
> Environment: windows xp
> java version "1.5.0_01"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
> Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)
> Reporter: zhanghongbin
> Assignee: Venkat Reddy
>
> When I use the SOAPEnvelope.getChildElements() to get all the child nodes of the SOAPEnvelope, what i expected is that
> the only header and the only body. But i got the followed:
> EnvelopeHeader 32392776 class org.apache.axis.message.SOAPHeader
> Body 4729123 class org.apache.axis.message.SOAPBody
> Body 25488452 class org.apache.axis.message.SOAPBody
> Body 25488452 class org.apache.axis.message.SOAPBody
> We can see that the SOAPEnvelope has two different objects of type class org.apache.axis.message.SOAPBody and two same references
> tos Body 25488452.
> According to the apidocs of SOAPEnvelope that an SOAPEnvelope can have the only one SOAPBody object. So is there something wrong
> in my code or the implementions????
> thanks
> sincerely
> attachement:(my test code)
> import org.apache.axis.MessageContext;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.encoding.XMLType;
> import org.apache.axis.utils.Options;
> import javax.xml.namespace.QName;
> import javax.xml.rpc.ParameterMode;
> import java.util.Iterator;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.SOAPElement;
> public class CalcClient
> {
> public static String getSubValueNonRecursive(SOAPElement sel){
> String ret = "";
> //ret += sel.getElementName().getLocalName() + sel.getValue() + "\n";
> ret += sel.getElementName().getLocalName();
> for(Iterator it = sel.getChildElements();it.hasNext();){
> SOAPElement se = (SOAPElement)it.next();
> ret += se.getElementName().getLocalName() + " " + se.hashCode() + " " + se.getClass() + "\n";
> }
> return ret;
> }
> public static void main(String [] args){
> try{
> // Options options = new Options(args);
> String endpoint = "http://localhost:8081/axis/Calculator.jws";
> // args = options.getRemainingArgs();
> String method = "add";
> Integer i1 = new Integer(1);
> Integer i2 = new Integer(2);
> Service service = new Service();
> Call call = (Call) service.createCall();
> call.setTargetEndpointAddress( new java.net.URL(endpoint) );
> call.setOperationName(new QName("",method));
> call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
> call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
> call.setReturnType( XMLType.XSD_INT );
> Object[] obj = new Object [] { i1, i2 };
> Integer ret = (Integer) call.invoke(obj);
> MessageContext mct = call.getMessageContext();
>
> SOAPEnvelope se = mct.getMessage().getSOAPPart().getEnvelope();
> String value = getSubValueNonRecursive(se);
> System.out.println(value);
> }catch(Exception e){
> e.printStackTrace();
> }
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Resolved: (AXIS-2081) use SOAPEnvelope.getChildElements() get multi SOAPBody objects
Posted by "Venkat Reddy (JIRA)" <ax...@ws.apache.org>.
[ http://issues.apache.org/jira/browse/AXIS-2081?page=all ]
Venkat Reddy resolved AXIS-2081:
--------------------------------
Resolution: Cannot Reproduce
as per my last comment.
> use SOAPEnvelope.getChildElements() get multi SOAPBody objects
> --------------------------------------------------------------
>
> Key: AXIS-2081
> URL: http://issues.apache.org/jira/browse/AXIS-2081
> Project: Apache Axis
> Type: Bug
> Versions: 1.1
> Environment: windows xp
> java version "1.5.0_01"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
> Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)
> Reporter: zhanghongbin
> Assignee: Venkat Reddy
>
> When I use the SOAPEnvelope.getChildElements() to get all the child nodes of the SOAPEnvelope, what i expected is that
> the only header and the only body. But i got the followed:
> EnvelopeHeader 32392776 class org.apache.axis.message.SOAPHeader
> Body 4729123 class org.apache.axis.message.SOAPBody
> Body 25488452 class org.apache.axis.message.SOAPBody
> Body 25488452 class org.apache.axis.message.SOAPBody
> We can see that the SOAPEnvelope has two different objects of type class org.apache.axis.message.SOAPBody and two same references
> tos Body 25488452.
> According to the apidocs of SOAPEnvelope that an SOAPEnvelope can have the only one SOAPBody object. So is there something wrong
> in my code or the implementions????
> thanks
> sincerely
> attachement:(my test code)
> import org.apache.axis.MessageContext;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.encoding.XMLType;
> import org.apache.axis.utils.Options;
> import javax.xml.namespace.QName;
> import javax.xml.rpc.ParameterMode;
> import java.util.Iterator;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.SOAPElement;
> public class CalcClient
> {
> public static String getSubValueNonRecursive(SOAPElement sel){
> String ret = "";
> //ret += sel.getElementName().getLocalName() + sel.getValue() + "\n";
> ret += sel.getElementName().getLocalName();
> for(Iterator it = sel.getChildElements();it.hasNext();){
> SOAPElement se = (SOAPElement)it.next();
> ret += se.getElementName().getLocalName() + " " + se.hashCode() + " " + se.getClass() + "\n";
> }
> return ret;
> }
> public static void main(String [] args){
> try{
> // Options options = new Options(args);
> String endpoint = "http://localhost:8081/axis/Calculator.jws";
> // args = options.getRemainingArgs();
> String method = "add";
> Integer i1 = new Integer(1);
> Integer i2 = new Integer(2);
> Service service = new Service();
> Call call = (Call) service.createCall();
> call.setTargetEndpointAddress( new java.net.URL(endpoint) );
> call.setOperationName(new QName("",method));
> call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
> call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
> call.setReturnType( XMLType.XSD_INT );
> Object[] obj = new Object [] { i1, i2 };
> Integer ret = (Integer) call.invoke(obj);
> MessageContext mct = call.getMessageContext();
>
> SOAPEnvelope se = mct.getMessage().getSOAPPart().getEnvelope();
> String value = getSubValueNonRecursive(se);
> System.out.println(value);
> }catch(Exception e){
> e.printStackTrace();
> }
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira