Axis
  1. Axis
  2. AXIS-2595

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

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.0-rc2
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Linux, Fedora 3 equivalent (Momonga 2)
      JDK 1.5.0-09 + jpackage 1.6 RPMs including axis-1.4-2jpp

      Description

      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>

        Activity

        Hide
        Ichiro Suzuki added a comment -

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

        Show
        Ichiro Suzuki added a comment - Affected version is 1.4, not 1.0-rc2. Sorry.

          People

          • Assignee:
            Unassigned
            Reporter:
            Ichiro Suzuki
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development