|
Fall Semester 2002 |
We need to create a context (bws) under webapps.
The contents for webapps/bws is provided here:
Here's the basic contents:/l/www/classes/a348/sum2002/notes/axis/examples/webapps/bws
This is a lot of code, but we need to approach it in stages.frilled.cs.indiana.edu%pwd /nfs/grouchy/home/user2/www/classes/a348-dger/sum2002/notes/axis/examples/webapps frilled.cs.indiana.edu%du -a bws 384 bws/WEB-INF/lib/axis.jar 128 bws/WEB-INF/lib/bws.jar 77 bws/WEB-INF/lib/log4j-core.jar 90 bws/WEB-INF/lib/wsdl4j.jar 848 bws/WEB-INF/lib/xalan.jar 1616 bws/WEB-INF/lib/xerces.jar 3144 bws/WEB-INF/lib 2 bws/WEB-INF/web.xml 3147 bws/WEB-INF 1 bws/index.html 4 bws/source.html 2 bws/ch2/ex1/index.jsp 3 bws/ch2/ex1 4 bws/ch2 1 bws/ch3/ex1/index.jsp 1 bws/ch3/ex1/intro.html 1 bws/ch3/ex1/inventoryCheck.jsp 2 bws/ch3/ex1/productListing.jsp 1 bws/ch3/ex1/toc-prods.html 1 bws/ch3/ex1/toc.html 1 bws/ch3/ex1/top.html 9 bws/ch3/ex1 1 bws/ch3/ex2/_buildSKUList.jsp 2 bws/ch3/ex2/index.jsp 4 bws/ch3/ex2 2 bws/ch3/ex3/index.jsp 3 bws/ch3/ex3 2 bws/ch3/ex4/index.jsp 3 bws/ch3/ex4 20 bws/ch3 3 bws/ch4/FileListener.java 4 bws/ch4 3 bws/ch5/ex1/index.jsp 4 bws/ch5/ex1 11 bws/ch5/ex2/index.jsp 12 bws/ch5/ex2 4 bws/ch5/ex3/index.jsp 5 bws/ch5/ex3 15 bws/ch5/ex4/index.jsp 16 bws/ch5/ex4 7 bws/ch5/ex5/index.jsp 6 bws/ch5/ex5/index.jsp.encryption 14 bws/ch5/ex5 2 bws/ch5/ex6/index.jsp 3 bws/ch5/ex6 55 bws/ch5 1 bws/inventory/InventoryCheck.jws 2 bws/inventory 2 bws/resources/deploy.xml 1 bws/resources/jms-client-config.xml 1 bws/resources/jms-server-config.xml 2 bws/resources/products.xml 2 bws/resources/sampleInvoice.xml 1 bws/resources/samplePO.xml 10 bws/resources 1 bws/util/_loadParameters.jsp 1 bws/util/deployServices.jsp 1 bws/util/makeFrames.jsp 1 bws/util/navigation.jsp 2 bws/util/showChapters.jsp 1 bws/util/showExamples.jsp 8 bws/util 3256 bws frilled.cs.indiana.edu%
So the first thing I want to emphasize is the contents of this folder:
Also, yourfrilled.cs.indiana.edu%pwd /nfs/grouchy/home/user2/www/classes/a348-dger/sum2002/notes/axis/examples/webapps frilled.cs.indiana.edu%du -a bws/WE*/lib 384 bws/WEB-INF/lib/axis.jar 128 bws/WEB-INF/lib/bws.jar 77 bws/WEB-INF/lib/log4j-core.jar 90 bws/WEB-INF/lib/wsdl4j.jar 848 bws/WEB-INF/lib/xalan.jar 1616 bws/WEB-INF/lib/xerces.jar 3144 bws/WEB-INF/lib frilled.cs.indiana.edu%
axis should be installed already. (Read Lecture Notes 28 for installation instructions and basic setup).
Chapter 2 describes XML:
A comprehensive example is here:
frilled.cs.indiana.edu%pwd
/nfs/grouchy/home/user2/www/classes/a348-dger/sum2002/notes/axis/examples/webapps/bws
frilled.cs.indiana.edu%ls
WEB-INF ch2 ch3 ch4 ch5 index.html inventory resources source.html util
frilled.cs.indiana.edu%du -a ch2
2 ch2/ex1/index.jsp
3 ch2/ex1
4 ch2
frilled.cs.indiana.edu%cat ch2/ex1/index.jsp
<%@ page import="java.io.*,bws.BookUtil,com.skatestown.invoice.*" %>
<HTML>
<HEAD><TITLE>Invoice Checker</TITLE></HEAD>
<h1>Invoice Checker</h1>
<p>This example implements a web form driver for SkatesTowns's invoice checker.
You can modify the invoice on the form if you wish (the default one is from Chapter 2),
select a DOM or SAX parser and perform a check on the invoice total.</p>
<FORM action="index.jsp" method="POST">
<%
String xml = request.getParameter("xml");
if (xml == null)
{
xml = BookUtil.readResource(application, "/resources/sampleInvoice.xml");
}
%>
<TEXTAREA NAME="xml" ROWS="20" COLS="90"><%= xml%></TEXTAREA>
<P></P>
Select parser type:
<INPUT type="RADIO" name="parserType" value="SAX" CHECKED> SAX
<INPUT type="RADIO" name="parserType" value="DOM"> DOM
<P></P>
<INPUT type="SUBMIT" value=" Check Invoice ">
</FORM>
<%
// Check for form submission
if (request.getParameter("xml") != null)
{
out.println("<HR>");
// Instantiate appropriate parser type
InvoiceChecker ic;
if (request.getParameter("parserType").equals("SAX"))
{
out.print("Using SAX parser...<br>");
ic = new InvoiceCheckerSAX();
}
else
{
out.print("Using DOM parser...<br>");
ic = new InvoiceCheckerDOM();
}
// Check the invoice
try
{
ic.checkInvoice(new StringBufferInputStream(xml));
out.print("Invoice checks OK.");
}
catch(Exception e)
{
out.print(e.getMessage());
}
}
%>
</BODY>
</HTML>
frilled.cs.indiana.edu%
We need to clarify what we have here. (Better indentation would help).
There's a class that's needed, and a package.
Where are these files?frilled.cs.indiana.edu%pwd /nfs/grouchy/home/user2/www/classes/a348-dger/sum2002/notes/axis/examples/webapps/bws frilled.cs.indiana.edu%ls WEB-INF ch2 ch3 ch4 ch5 index.html inventory resources source.html util frilled.cs.indiana.edu%du -a ch2 2 ch2/ex1/index.jsp 3 ch2/ex1 4 ch2 frilled.cs.indiana.edu%grep import ch2/ex1/index.jsp <%@ page import="java.io.*,bws.BookUtil,com.skatestown.invoice.*" %> frilled.cs.indiana.edu%
(They are in webapps/bws/WEB-INF/lib/bws.jar, of course).
Here's where you can find them as source code:
Looking again at the code we can point out a few things:frilled.cs.indiana.edu%pwd /nfs/grouchy/home/user2/www/classes/a348-dger/sum2002/notes/axis/examples/src frilled.cs.indiana.edu%ls -l total 43 -rw-r--r-- 1 dgerman faculty 1005 Dec 12 2001 Order.java -rw-r--r-- 1 dgerman faculty 3184 Dec 12 2001 OrderBean.java -rw-r--r-- 1 dgerman faculty 1424 Dec 12 2001 OrderData.java -rw-r--r-- 1 dgerman faculty 425 Dec 12 2001 OrderDeserializerFactory.java -rw-r--r-- 1 dgerman faculty 282 Dec 12 2001 OrderHome.java -rw-r--r-- 1 dgerman faculty 2027 Dec 12 2001 OrderObject.java -rw-r--r-- 1 dgerman faculty 2900 Dec 12 2001 OrderSerializer.java -rw-r--r-- 1 dgerman faculty 592 Dec 12 2001 POProcess.java -rw-r--r-- 1 dgerman faculty 4123 Dec 12 2001 POProcessBean.java -rw-r--r-- 1 dgerman faculty 4562 Dec 12 2001 POProcessBeanJMS.java -rw-r--r-- 1 dgerman faculty 2284 Dec 12 2001 POProcessCaller.java -rw-r--r-- 1 dgerman faculty 112 Dec 12 2001 POProcessException.java -rw-r--r-- 1 dgerman faculty 373 Dec 12 2001 POProcessHome.java -rw-r--r-- 1 dgerman faculty 1050 Dec 12 2001 Product.java -rw-r--r-- 1 dgerman faculty 2226 Dec 12 2001 ProductBean.java -rw-r--r-- 1 dgerman faculty 343 Dec 12 2001 ProductHome.java drwxr-xr-x 2 dgerman faculty 512 Jan 21 2002 bws drwxr-xr-x 5 dgerman faculty 512 Jan 21 2002 ch3 drwxr-xr-x 6 dgerman faculty 512 Jan 21 2002 ch5 drwxr-xr-x 7 dgerman faculty 512 Jan 21 2002 ch6 drwxr-xr-x 5 dgerman faculty 512 Jan 21 2002 ch7 drwxr-xr-x 3 dgerman faculty 512 Jan 21 2002 ch8 drwxr-xr-x 3 dgerman faculty 512 Jan 21 2002 com frilled.cs.indiana.edu%du -a com 2 com/skatestown/backend/EmailConfirmation.java 2 com/skatestown/backend/POProcessor.java 2 com/skatestown/backend/ProductDB.java 7 com/skatestown/backend 2 com/skatestown/data/Address.java 1 com/skatestown/data/BusinessDocument.java 1 com/skatestown/data/Invoice.java 1 com/skatestown/data/InvoiceItem.java 1 com/skatestown/data/PO.java 1 com/skatestown/data/POItem.java 2 com/skatestown/data/Product.java 10 com/skatestown/data 1 com/skatestown/invoice/InvoiceChecker.java 4 com/skatestown/invoice/InvoiceCheckerDOM.java 4 com/skatestown/invoice/InvoiceCheckerSAX.java 10 com/skatestown/invoice 3 com/skatestown/services/EMailHandler.java 2 com/skatestown/services/InventoryCheck.java 2 com/skatestown/services/POSubmission.java 2 com/skatestown/services/POSubmission2.java 3 com/skatestown/services/TrackingSubmission.java 13 com/skatestown/services 4 com/skatestown/xml/Deserializer.java 5 com/skatestown/xml/Serializer.java 10 com/skatestown/xml 51 com/skatestown 52 com frilled.cs.indiana.edu%du -a bws 5 bws/BookUtil.java 6 bws frilled.cs.indiana.edu%
<%@ page import="java.io.*,bws.BookUtil,com.skatestown.invoice.*" %>
<HTML><HEAD><TITLE>Invoice Checker</TITLE></HEAD>
<body bgcolor=white>
<h1>Invoice Checker</h1>
<p>This example implements a web form driver for SkatesTowns's invoice
checker. You can modify the invoice on the form if you wish (the default
one is from Chapter 2), select a DOM or SAX parser and perform a check on
the invoice total.</p>
<FORM action="index.jsp" method="POST">
<%
String xml = request.getParameter("xml");
if (xml == null) {
xml = BookUtil.readResource(application, "/resources/sampleInvoice.xml");
}
%>
<TEXTAREA NAME="xml" ROWS="20" COLS="90"><%= xml%></TEXTAREA>
<P></P>
Select parser type:
<INPUT type="RADIO" name="parserType" value="SAX" CHECKED> SAX
<INPUT type="RADIO" name="parserType" value="DOM"> DOM
<P></P>
<INPUT type="SUBMIT" value=" Check Invoice ">
</FORM>
<%
// Check for form submission
if (request.getParameter("xml") != null) {
out.println("<HR>");
// Instantiate appropriate parser type
InvoiceChecker ic;
if (request.getParameter("parserType").equals("SAX")) {
out.print("Using SAX parser...<br>");
ic = new InvoiceCheckerSAX();
} else {
out.print("Using DOM parser...<br>");
ic = new InvoiceCheckerDOM();
}
// Check the invoice
try {
ic.checkInvoice(new StringBufferInputStream(xml));
out.print("Invoice checks OK.");
} catch(Exception e) {
out.print(e.getMessage());
}
}
%>
</BODY>
</HTML>
Looking into the source code should clarify the SAX vs DOM differences. With this completely understood we could delve into:
I agree this could be made more exciting, but let's put that off for now.