Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sending and receiving XML in a Java application Sean C. Sullivan sean seansullivan com September 2003.

Similar presentations


Presentation on theme: "Sending and receiving XML in a Java application Sean C. Sullivan sean seansullivan com September 2003."— Presentation transcript:

1 Sending and receiving XML in a Java application Sean C. Sullivan sean seansullivan com September 2003

2 Agenda XML XML via HTTP XML via JMS XML via JavaMail XML via FTP

3 Agenda XML XML via HTTP XML via JMS XML via JavaMail XML via FTP

4 XML Sun Microsystems SUNW XML is a syntax for describing and structuring data

5 Application integration “[If you look at] where XML is really, truly being used right now, it's [for] lightweight, quick and dirty enterprise application integration. […] you could achieve remarkably acceptable results in enterprise application integration simply by binding a set of XML messages to ship back and forth.” Tim Bray, 9/23/2003, news.com interview

6 Data exchange Application BApplication A

7 XML request 97210 12208 35 OVERNIGHT

8 XML response 68.00

9 Agenda XML XML via HTTP XML via JMS XML via JavaMail XML via FTP

10 HTTP protocol HTTP server HTTP client request

11 HTTP protocol HTTP server HTTP client request response

12 HTTP protocol methods GET POST HEAD …

13 HTTP headers Content-Type Accept

14 MIME types for XML text/xml application/xml text/xml-external-parsed-entity application/xml-external-parsed-entity application/xml-dtd application/soap+xml

15 Jakarta Commons HTTPClient

16 Example: HTTP POST import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods*; PostMethod post = new PostMethod( “http://www.foo.com/bar”); post.setRequestBody(strXML); post.setRequestHeader( “Content-type”, “application/xml”);

17 Example: HTTP POST post.setRequestHeader( “Accept”, “application/xml”); HttpClient client = new HttpClient(); int result = client.executeMethod(post); // … String strXMLResponse = post.getResponseBodyAsString(); post.releaseConnection();

18 Receiving XML using a Servlet public class XMLServlet extends javax.servlet.http.HttpServlet { protected void doPost( HttpServletRequest req, HttpServletResponse resp) { // … method implementation … }

19 doPost method // … String type = req.getContentType(); int contentLength = req.getContentLength(); char[] xmlData = new char[contentLength]; BufferedReader reader = httpRequest.getReader(); // …

20 doPost (continued) do { n = reader.read(xmlData, bytesRead, xmlData.length - bytesRead); if (n > 0) { bytesRead += n; } } while ( (n != -1) && (bytesRead < contentLength) )

21 Agenda XML XML via HTTP XML via JMS XML via JavaMail XML via FTP

22 Java Message Service messaging API for J2EE platform Point-to-point –JMS Queue Publish-Subscribe –JMS Topic “at most once” delivery mode transactional

23 JMS message queue Message Producer Message Queue 123 Message Consumer

24 Sending XML using JMS import javax.jms.*; import javax.naming.*; Queue queue; ConnectionFactory cf; queue = /* lookup via JNDI */; cf = /* lookup via JNDI */; Connection conn = cf.createConnection(); Session session = conn.createSession(…);

25 Sending XML using JMS MessageProducer producer; producer = session.createProducer(queue); TextMessage msg; msg = session.createTextMessage(); msg.setText(strXML); producer.send(msg); session.commit();

26 Receiving XML via JMS Choose one: javax.jms.MessageConsumer Message Driven Bean (MDB)

27 Example: Message Driven Bean public void onMessage(Message msg) { // … if (msg instanceof TextMessage) { TextMessage tm = (Message) msg; String strXML = tm.getText(); } // … }

28 Agenda XML XML via HTTP XML via JMS XML via JavaMail XML via FTP

29 JavaMail

30 Example: XML via JavaMail import javax.mail.*; import javax.mail.internet.*; Session sess = /* JNDI lookup */; MimeMessage msg = new MimeMessage(sess); msg.setFrom(from); // …

31 Example: XML via JavaMail // … msg.setRecipients( Message.RecipientType.TO, recipients); msg.setSubject(“Hello XML”); // …

32 Example: XML via JavaMail // … MimeBodyPart mbp = new MimeBodyPart(); mbp.setContent(strXML, “application/xml”); Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp); msg.setContent(mp); Transport.send(msg); // …

33 Agenda XML XML via HTTP XML via JMS XML via JavaMail XML via FTP

34 FTP with Jakarta Commons Net

35 Example: XML via FTP import org.apache.commons.net.ftp.*; FTPClient ftp = new FTPClient(); ftp.connect(“ftp.example.com”); ftp.login(username, password);

36 Example: XML via FTP ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.enterLocalPassiveMode(); ftp.storeFile(“foo.xml”, xmlInputStream); ftp.logout(); ftp.disconnect();

37 Additional topics… Sockets SOAP XML-RPC Binary encodings for XML

38 Additional resources http://www.w3.org/XML/ http://www.xml.com/ http://java.sun.com/xml/ http://xml.apache.org/ http://ws.apache.org/axis/ http://jakarta.apache.org/

39 Summary Use XML for data exchange between heterogeneous applications. Sending and receiving XML is easy.


Download ppt "Sending and receiving XML in a Java application Sean C. Sullivan sean seansullivan com September 2003."

Similar presentations


Ads by Google