Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

  • 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
borderStyle
borderStylesolid
titleindex.jspsolid

<%@ 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
borderStylesolid
titlepost.jspborderStylesolid

<%@ 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
borderStylesolid
titleConverterHandler.javasolid

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
borderStylesolid
titlegeronimo-web.xmlborderStylesolid

<?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
Test via Post
Test via Post

The code for testing the RESTful service via POST method hasn't been added to the ConverterHandler.
A sample post file might look like this

Code Block
borderStylesolid
titleSampleRequest.xmlborderStylesolid
<?xml version="1.0" encoding="UTF-8"?>
<amount dollars="23" />

...