tags:

views:

30

answers:

1

I have a call to an XMLRPC implemented in Java which I have verified that runs without exceptions and writes the output. The call in Perl goes like this:

  my $result = XMLRPC::Lite
    -> proxy($url)
    -> call("someMethod",
               SOAP::Data->type(string => $par1),
               SOAP::Data->type(string => $par2),
               # etc...
       )
    -> result;

But then I check for $result and it is not defined, I get Bad file descriptor error. What could be happening? It was working before, I can't think of anything significant that may have changed...

A: 

OK, I found it, although I don't quite understand why it happened. The XMLRPC app does this:

byte[] result = xServer.execute(request.getInputStream());

getLogger().log(new String(result));

response.setContentType("text/xml");
response.setContentLength(result.length);
OutputStream out = response.getOutputStream();
out.write(result);
out.flush();

getLogger().log("finished doPost");

I'm logging the result that is sent to the output and therefore I should be getting it in the Perl script's $result variable. The result is XML generated via the Jdom library. While I got the error, what got logged was an XML cointaining an error message indicating a problem with Jdom (basically, the app wasn't fully recompiled to that version of the library).

Now that it works, the expected XML is logged and successfully assigned to $result in Perl.

However, since the byte array is an XML in both cases I don't quite understand how it makes any difference to the caller. It wasn't even looking for a given XML sctructure, the call resulted in an error.

Any insight on this will be appreciated. However the problem is solved.

Germán