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 "Ichiro Suzuki (JIRA)" <ax...@ws.apache.org> on 2006/12/01 13:34:21 UTC

[jira] Created: (AXIS-2595) TransformerException of reply message when SOAPConnection.call() fails with no connection.

TransformerException of reply message when SOAPConnection.call() fails with no connection.
------------------------------------------------------------------------------------------

                 Key: AXIS-2595
                 URL: http://issues.apache.org/jira/browse/AXIS-2595
             Project: Apache Axis
          Issue Type: Bug
    Affects Versions: 1.0-rc2
         Environment: Linux, Fedora 3 equivalent (Momonga 2)
JDK 1.5.0-09 + jpackage 1.6 RPMs including axis-1.4-2jpp
            Reporter: Ichiro Suzuki


When SOAPConnection.call(SOAPMessage, String) fails with no connection established,
it returns a message with Fault.  Then, Transformer.transform(reply.getSOAPPart().getContent())
fails with,
    javax.xml.transform.TransformerException: Source object passed to ''{0}'' has no contents.
.  Strangely, if Transformer.transform(new DOMResult(reply.getSOAPPart())) is called beforehand
(this call fails with same exception), subsequent transform() succeeds.

Sample code, soap.java, is Listing 1.
Exception stack trace is Listing 2.
message.writeTo() of the original message is Listing 3.
reply.writeTo() is Listing 4.

==== Listing 1
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

public class soap {
        public void run() throws Exception {
                MessageFactory mf = MessageFactory.newInstance();
                SOAPMessage m = mf.createMessage();
                SOAPEnvelope e = m.getSOAPPart().getEnvelope();

                SOAPBody b = e.getBody();
                b.addBodyElement(e.createName("Hi", "hi", "urn:Hi"));

                m.writeTo(System.out);
                System.out.println();

                SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
                SOAPConnection c = scf.createConnection();

                SOAPMessage r = c.call(m, "http://localhost:40000");

                r.writeTo(System.out);
                System.out.println();

                StreamResult result = new StreamResult(System.out);

                Transformer t = TransformerFactory.newInstance().newTransformer();
                try {  // this try-catch clause is the work-around
                        t.transform(new DOMSource(r.getSOAPPart()), new DOMResult());
                } catch (TransformerException ignored) {}
                t.transform(r.getSOAPPart().getContent(), result);

                System.out.println();
        }

        public static void main(String[] args) throws Exception { 
                try {
                        soap soap = new soap();
                        soap.run();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}

==== Listing 2

javax.xml.transform.TransformerException: Source object passed to ''{0}'' has no contents.
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:602)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:642)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:281)
        at soap.run(soap.java:32)
        at soap.main(soap.java:40)

==== Listing 3

<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><hi:Hi xmlns:hi="urn:Hi"/></soapenv:Body></soapenv:Envelope>

==== Listing 4

<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><soapenv:Fault><faultcode>soapenv:Server.userException</faultcode><faultstring>java.net.ConnectException: Connection refused</faultstring><detail><ns1:stackTrace xmlns:ns1="http://xml.apache.org/axis/">java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:516)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
        at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120)
        at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
        at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:1870)
        at org.apache.axis.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:90)
        at soap.run(soap.java:21)
        at soap.main(soap.java:40)
</ns1:stackTrace><ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">chollo</ns2:hostname></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>



-- 
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

        

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Commented: (AXIS-2595) TransformerException of reply message when SOAPConnection.call() fails with no connection.

Posted by "Ichiro Suzuki (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXIS-2595?page=comments#action_12454894 ] 
            
Ichiro Suzuki commented on AXIS-2595:
-------------------------------------

Affected version is 1.4, not 1.0-rc2.  Sorry.

> TransformerException of reply message when SOAPConnection.call() fails with no connection.
> ------------------------------------------------------------------------------------------
>
>                 Key: AXIS-2595
>                 URL: http://issues.apache.org/jira/browse/AXIS-2595
>             Project: Apache Axis
>          Issue Type: Bug
>    Affects Versions: 1.0-rc2
>         Environment: Linux, Fedora 3 equivalent (Momonga 2)
> JDK 1.5.0-09 + jpackage 1.6 RPMs including axis-1.4-2jpp
>            Reporter: Ichiro Suzuki
>
> When SOAPConnection.call(SOAPMessage, String) fails with no connection established,
> it returns a message with Fault.  Then, Transformer.transform(reply.getSOAPPart().getContent())
> fails with,
>     javax.xml.transform.TransformerException: Source object passed to ''{0}'' has no contents.
> .  Strangely, if Transformer.transform(new DOMResult(reply.getSOAPPart())) is called beforehand
> (this call fails with same exception), subsequent transform() succeeds.
> Sample code, soap.java, is Listing 1.
> Exception stack trace is Listing 2.
> message.writeTo() of the original message is Listing 3.
> reply.writeTo() is Listing 4.
> ==== Listing 1
> import javax.xml.transform.dom.*;
> import javax.xml.transform.stream.*;
> public class soap {
>         public void run() throws Exception {
>                 MessageFactory mf = MessageFactory.newInstance();
>                 SOAPMessage m = mf.createMessage();
>                 SOAPEnvelope e = m.getSOAPPart().getEnvelope();
>                 SOAPBody b = e.getBody();
>                 b.addBodyElement(e.createName("Hi", "hi", "urn:Hi"));
>                 m.writeTo(System.out);
>                 System.out.println();
>                 SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
>                 SOAPConnection c = scf.createConnection();
>                 SOAPMessage r = c.call(m, "http://localhost:40000");
>                 r.writeTo(System.out);
>                 System.out.println();
>                 StreamResult result = new StreamResult(System.out);
>                 Transformer t = TransformerFactory.newInstance().newTransformer();
>                 try {  // this try-catch clause is the work-around
>                         t.transform(new DOMSource(r.getSOAPPart()), new DOMResult());
>                 } catch (TransformerException ignored) {}
>                 t.transform(r.getSOAPPart().getContent(), result);
>                 System.out.println();
>         }
>         public static void main(String[] args) throws Exception { 
>                 try {
>                         soap soap = new soap();
>                         soap.run();
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>         }
> }
> ==== Listing 2
> javax.xml.transform.TransformerException: Source object passed to ''{0}'' has no contents.
>         at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:602)
>         at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:642)
>         at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:281)
>         at soap.run(soap.java:32)
>         at soap.main(soap.java:40)
> ==== Listing 3
> <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><hi:Hi xmlns:hi="urn:Hi"/></soapenv:Body></soapenv:Envelope>
> ==== Listing 4
> <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><soapenv:Fault><faultcode>soapenv:Server.userException</faultcode><faultstring>java.net.ConnectException: Connection refused</faultstring><detail><ns1:stackTrace xmlns:ns1="http://xml.apache.org/axis/">java.net.ConnectException: Connection refused
>         at java.net.PlainSocketImpl.socketConnect(Native Method)
>         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
>         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
>         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
>         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
>         at java.net.Socket.connect(Socket.java:516)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
>         at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120)
>         at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
>         at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
>         at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
>         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>         at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
>         at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>         at org.apache.axis.client.Call.invoke(Call.java:2767)
>         at org.apache.axis.client.Call.invoke(Call.java:1870)
>         at org.apache.axis.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:90)
>         at soap.run(soap.java:21)
>         at soap.main(soap.java:40)
> </ns1:stackTrace><ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">chollo</ns2:hostname></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>

-- 
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

        

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org