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:36:27 UTC

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

    [ 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