Axis Webservice - how to return XML-Document?

  • Thread starter Guenter Dannhaeuser
  • Start date
G

Guenter Dannhaeuser

Hi,

I have a webservice using Jena on some RDF/XML data resulting in a
com.hp.hpl.jena.rdf.model.Model which I´d like to return to the client
as RDF/XML-Document.

com.hp.hpl.jena.rdf.model.Model has a method "write" to turn the Model
into RDF/XML and write it to an OutputStream.



First idea: return the XML in a string:

//webservice
public String lookup(String param1, String param2) {
Model mymodel = ModelFactory.createDefaultModel();
//do something ...
ByteArrayOutputStream os = new ByteArrayOutputStream();
mymodel.write(os, "RDF/XML-ABBREV");
return os.toString();
}

.... this works ok on the server-side
(System.out.println(os.toString()) = document as expected),

but on client-side all I get is:

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
</rdf:RDF>

(first xmlns:rdf and all nodes missing)

//the client:
//...
myService service = new myServiceLocator();
my_PortType stub = service.getMyMethod();
System.out.println(stub.lookup("astring", "anotherstring"));
//...




Next idea: put it in an attachment:

//webservice
//...
//do something ...
MessageContext context = MessageContext.getCurrentContext();
Message response = context.getResponseMessage();

response.getAttachmentsImpl().setSendType(Attachments.SEND_TYPE_DIME);
DataHandler dh = new DataHandler(baos.toString(), "???");
AttachmentPart attachment = response.createAttachmentPart(dh);
attachment.setContentId("attachment");
response.addAttachmentPart(attachment);

problems: how to get the DataHandler dh? how to unpack the attachment
on client-side?


Thanks a lot for all help.
 
V

Venky

G

Guenter Dannhaeuser


Ok, thanks - now I have the webservice send an attachment and the
client receive the attachment using DataHandler.
But the output is still the same i.e. incomplete (see bottom).

The webservice:

public void lookup(<parameters>) {
....
MessageContext context = MessageContext.getCurrentContext();
Message msg = context.getResponseMessage();
msg.getAttachmentsImpl().setSendType(Attachments.SEND_TYPE_DIME);
DataHandler dh = new DataHandler(new
FileDataSource("tempfile"));
AttachmentPart attachment = new AttachmentPart(dh);
msg.addAttachmentPart(attachment);
return "attachment";
}


For testing purposes i use following tempfile:

<?xml version="1.0" encoding="iso-8859-1" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:ex="http://example.org/stuff/1.0/">
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
dc:title="RDF/XML Syntax Specification (Revised)">
<ex:editor>
<rdf:Description ex:fullName="Dave Beckett">
<ex:homePage rdf:resource="http://purl.org/net/dajobe/" />
</rdf:Description>
</ex:editor>
</rdf:Description>
</rdf:RDF>


The client looks like this:
MyService service = new MyServiceLocator();
MySoapBindingStub stub = (MySoapBindingStub) service.getgrs();

stub.lookup(<parameters>);
MessageContext context = stub._getCall().getMessageContext();
Message msg = context.getCurrentMessage();

Iterator attIter = msg.getAttachments();
if (attIter.hasNext()) {
AttachmentPart att = (AttachmentPart) attIter.next();
DataHandler dh = att.getDataHandler();
dh.writeTo(System.out);
} else {
System.out.println("No Attachment");
}

The clients output:

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
</rdf:RDF>


Any hints?
Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,226
Latest member
KristanTal

Latest Threads

Top