...
- Right Click the jaxws-converterclient, and Select New->JSP
- Name the jsp as index.jsp and click Finish
- Add the following code to the index.jsp
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>RESTful Client</title> </head> <body> <center> <h1>RESTful Client</h1> <br><br> <a href="post.jsp">Test via Post</a> <table bgcolor="#CCC"> <tr><td> <form action="index.jsp" >Dollars: <input type="text" name="query"> <input type="submit" value="Submit"></form> </td></tr> </table> </center> <jsp:include page="/ConverterHandler" /> </body> </html> |
- Right click again and add another jsp named post.jsp
- Add the following code to post.jsp
Code Block | borderStyle | solid|||
---|---|---|---|---|
| ||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>RESTful Client</title> </head> <body> <center> <h1>RESTful Client</h1> <a href="index.jsp">Test via Get</a> <br><br> <table bgcolor="#CCC"> <tr><td> <form method="post" enctype=multipart/form-data action="post.jsp" >Enter full file Name: <input type="file" name="query"> <input type="submit" value="Submit"></form> </td></tr> </table> </center> <jsp:include page="/ConverterHandler" /> </body> </html> |
- Right click again and add a Servlet named ConverterHandler
- Add the following code to ConverterHandler.java
Code Block | borderStyle | solid|||
---|---|---|---|---|
| ||||
package org.apache.geronimo.samples.jaxws.rest; import java.io.*; import javax.servlet.ServletException; import javax.servlet.http.*; import javax.xml.parsers.*; import javax.xml.xpath.*; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; import org.w3c.dom.*; import org.xml.sax.SAXException; public class ConverterHandler extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; public ConverterHandler() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String query = request.getParameter("query"); if (query != null && query.length() > 0) { out.println("<center>"); out.println("<br><br><br>"); String requestquery = "http://localhost:8080/jaxws-rest-converter/converter?amount=" + query; HttpClient client = new HttpClient(); GetMethod method = new GetMethod(requestquery); int statusCode = client.executeMethod(method); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + method.getStatusLine()); } InputStream rstream = null; rstream = method.getResponseBodyAsStream(); Document queryresponse = null; try { queryresponse = DocumentBuilderFactory.newInstance() .newDocumentBuilder().parse(rstream); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } XPathFactory factory = XPathFactory.newInstance(); XPath xPath = factory.newXPath(); NodeList nodes = null; try { nodes = (NodeList) xPath.evaluate("/return", queryresponse, XPathConstants.NODESET); } catch (XPathExpressionException e) { e.printStackTrace(); } int nodeCount = nodes.getLength(); for (int i = 0; i < nodeCount; i++) { // Get each xpath expression as a string String rupees = null; String euros = null; try { rupees = (String) xPath.evaluate("dollarToRupeesResponse", nodes.item(i), XPathConstants.STRING); euros = (String) xPath.evaluate("rupeesToEurosResponse", nodes.item(i), XPathConstants.STRING); } catch (XPathExpressionException e) { e.printStackTrace(); } out.println(query + " Dollars equals to " + rupees + " Rupees"); out.println("<br>"); out.println(rupees + " Rupees equals to " + euros + " Euros"); } out.println("</center>"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Has to be Completed } } |
...
- As two external jars have been added to the project's build path, One needs to specify them as dependencies so that at runtime application can resolve the classes.
- Expand WebContent/WEB-INF directory and open geronimo-web.xml
- Add the following code to geronimo-web.xml
Code Block | |||||
---|---|---|---|---|---|
| |||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns8:web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:ns2="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ns3="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:ns4="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:ns5="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:ns6="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:ns7="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:ns8="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1" xmlns:ns9="http://java.sun.com/xml/ns/persistence" xmlns:ns10="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0"> <ns2:environment> <ns2:moduleId> <ns2:groupId>default</ns2:groupId> <ns2:artifactId>jaxws-rest-converterclient</ns2:artifactId> <ns2:version>1.0</ns2:version> <ns2:type>car</ns2:type> </ns2:moduleId> <ns2:dependencies> <ns2:dependency> <ns2:groupId>commons-codec</ns2:groupId> <ns2:artifactId>commons-codec</ns2:artifactId> <ns2:version>1.3</ns2:version> <ns2:type>jar</ns2:type> </ns2:dependency> <ns2:dependency> <ns2:groupId>commons-httpclient</ns2:groupId> <ns2:artifactId>commons-httpclient</ns2:artifactId> <ns2:version>3.0.1</ns2:version> <ns2:type>jar</ns2:type> </ns2:dependency> </ns2:dependencies> </ns2:environment> <ns8:context-root>/jaxws-rest-converterclient</ns8:context-root> </ns8:web-app> |
...
Info | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
The code for testing the RESTful service via POST method hasn't been added to the ConverterHandler.
|
...