User: mulder
Date: 00/10/12 11:13:22
Modified: manual examples.html index.html
Added: manual jboss-petstore.tgz
Log:
Complete the Examples section of the manual. Remove the link to
RMH examples from the docs page, since it is now in the manual.
Revision Changes Path
1.3 +469 -19 jbossweb/manual/examples.html
Index: examples.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/manual/examples.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- examples.html 2000/10/10 04:18:30 1.2
+++ examples.html 2000/10/12 18:13:20 1.3
@@ -8,28 +8,478 @@
<h2><a NAME="petstore">J2EE Blueprints: Pet Store</a></h2>
<p>One common example is the Pet Store web app that Sun created
- as part of the "J2EE Blueprints" package. Though it assumes
- you're using the J2EE RI server, it's not too difficult to
- adapt to jBoss and Tomcat.</p>
+ as part of the "J2EE Blueprints" package. It assumes you're
+ using the J2EE RI server, but it can be adapted to jBoss and
+ Tomcat. The changes are not trivial, but are certainly
+ possible. These directions are for UNIX, but if you can
+ convert a shell script to a batch file then you'll be fine on
+ Windows as well. These directions assume Tomcat 3.2, but
+ you should be able to run with other versions of Tomcat
+ without changing more than the deployment directories.</p>
<p>Here are the tasks you'll need to perform to deploy the
Pet Store:</p>
<ol>
- <li><a HREF="http://java.sun.com/j2ee/download.html">Download</a>
- the pet store source.</li>
- <li><a HREF="http://jakarta.apache.org/downloads/binindex.html">Download</a>
- a current version of Ant</li>
- <li>Update your build script to use J2EE components outside of
- Sun's <code>j2ee.jar</code></li>
- <li>Update your Ant script to use current Ant syntax and ignore
- the J2EE RI security implementation</li>
- <li>Resolve the Catalog DB Situation</li>
- <li>Build the Java code</li>
- <li>Make EJB client and server and support JARs</li>
- <li>Prepare the database</li>
- <li>Add the jBoss-specific EJB directives</li>
- <li>Deploy the JSPs to Tomcat</li>
- <li>Deploy the EJBs to jBoss</li>
- <li>Run the Pet Store!</li>
+ <li><a HREF="#petstore1">Download the Pet Store</a></li>
+ <li><a HREF="#petstore2">Download ANT</a></li>
+ <li><a HREF="#petstore3">Get The jBoss Petstore Package</a></li>
+ <li><a HREF="#petstore4">Resolve the Catalog DB Situation</a></li>
+ <li><a HREF="#petstore5">Resolve the Account Situation</a></li>
+ <li><a HREF="#petstore6">Resolve the JNDI Situation</a></li>
+ <li><a HREF="#petstore7">Prepare the Database</a></li>
+ <li><a HREF="#petstore8">Add DB Pool to jBoss</a></li>
+ <li><a HREF="#petstore9">Correct the Server Name</a></li>
+ <li><a HREF="#petstore10">Add the jBoss-specific EJB directives</a></li>
+ <li><a HREF="#petstore11">Build and Deploy</a></li>
+ <li><a HREF="#petstore12">Add User Accounts to Tomcat</a></li>
+ <li><a HREF="#petstore13">Add EJB Libraries to Tomcat</a></li>
+ <li><a HREF="#petstore14">Start jBoss</a></li>
+ <li><a HREF="#petstore15">Start Tomcat</a></li>
+ <li><a HREF="#petstore16">Run the Pet Store</a></li>
</ol>
+ <hr>
+ <h3><a NAME="petstore1">Download the Pet Store</a></h3>
+ <p>You can get the source from
+ <a HREF="http://java.sun.com/j2ee/download.html">Sun's J2EE
+ Download Page</a>. It's in the "J2EE Blueprints" package.
+ Unpack it anywhere.</p>
+
+ <h3><a NAME="petstore2">Download ANT</a></h3>
+ <p>You need a current version of ANT. You can get it from the
+ <a HREF="http://jakarta.apache.org/downloads/binindex.html">Jakarta
+ Project Download Page</a>. Unpack it anywhere. Build it using
+ the build.sh script (you will need an XML parser in your
+ classpath).</p>
+
+ <h3><a NAME="petstore3">Get The jBoss Petstore Package</a></h3>
+ <p>You can make a bunch of changes yourself, but to save you some
+ time we wrapped some of them together. Download the
+ <a HREF="jboss-petstore.tgz">jBoss Petstore Package</a>. You
+ can open it with tar on UNIX or WinZip on Windows. Unpack it
+ into the main petstore directory created above - it will create
+ the src/jboss directory within the pet store. This directory
+ has updated ANT build scripts, updated shell scripts, and
+ Tomcat and jBoss configuration files. There are a number of
+ changes you need to make to the files in here to customize
+ them to your environment:</p>
+ <p>You need to edit the <b>build.sh</b> file and
+ put in the correct directories for the <code>J2EE</code>,
+ <code>XML</code>, and <code>ANT_HOME</code> variables. The
+ J2EE variable should have paths to the javax.xxx classes for
+ Servlets 1.2, EJB 1.1, Java Mail 1.1.3, JavaBeans Activation
+ Framework 1.0.1, JTA 1.0.1, and the JDBC Optional Package 2.0.
+ The XML variable should have paths to JAXP 1.0.1 and either the
+ Sun (parser.jar) or Apache (xerces.jar) parser. The ANT_HOME
+ variable should point to where you downloaded ANT above.</p>
+ <p><i><b>Note:</b> You should not use the j2ee.jar distributed with
+ the J2EE Reference Implementation - use the individual packages
+ available from Tomcat or jBoss or Sun's web site!</i></p>
+ <p>You need to edit the <b>build.xml</b> file and
+ put in the correct directories for the <code>jboss</code> and
+ <code>tomcat</code> properties pointing to your jboss
+ install directory and Tomcat install directory.</p>
+ <p>You need to edit the <b>jndi.properties</b> file and put
+ the correct hostname for your jBoss server in the
+ <code>java.naming.provider.url</code> property.</p>
+
+ <h3><a NAME="petstore4">Resolve the Catalog DB Situation</a></h3>
+ <p>The default implementation of the Catalog object performs all
+ the data access from the JSP helper class and ignores the EJB.
+ If you are running jBoss and Tomcat separately, this does not
+ work (the DB pools are only available to the EJBs). It may
+ work if you are running jBoss and Tomcat fully integrated, but
+ it is still a questionable design choice.</p>
+ <p>Because of the way Sun partitioned their code, it is quite
+ easy to move the DB calls to the EJB. Just copy the code out of
+ CatalogImpl and paste it into CatalogEJB. Then update
+ CatalogImpl to call the EJB instead (many of the other Impls are
+ done this way, so you can practically copy & paste
+ again).</p>
+
+ <h3><a NAME="petstore5">Resolve the Account Situation</a></h3>
+ <p>The default implementation of the Account object assumes that
+ the authentication information will be shared between the
+ servlet and EJB containers, but this is not the case between
+ jBoss and Tomcat. You must make a small change in the
+ ShoppingClientController interface - add a
+ <code>getAccount(String userid)</code> method along with the
+ parameterless method. Then implement it in the
+ ShoppingClientControllerEJB - the same as the parameterless
+ one, but use the parameter instead of information from the
+ SessionContext. Finally, in ShoppingClientControllerWebImpl
+ there are two calls to <code>sccEjb.getAccount()</code> that
+ need to be changed to
+ <code>sccEjb.getAccount((String)session.getAttribute("j_username"))</code> to
pass the user ID from servlet to EJB.</p>
+
+ <h3><a NAME="petstore6">Resolve the JNDI Situation</a></h3>
+ <p>The default JNDI lookups (in
+ <code>com.sun.estore.util.EJBUtil</code>) assume that the JNDI
+ names for beans will be the same regardless of whether the
+ caller is a JSP or EJB. This is not the case for jBoss and
+ Tomcat - the EJB lookups are the same (for example,
+ <code>java:comp/env/ejb/catalog</code>), but the JSP lookups
+ are different (for example, <code>TheCatalog</code>). The
+ easiest way to resolve this is to declare parallel variables in
+ the <code>JNDINames</code> class and then add a second lookup
+ in the NamingException handler of each method of the
+ <code>EJBUtil</code> class that tries the other name. It's
+ a little less efficient than creating a second JSP-tier class,
+ but hey, it's just a demo.</p>
+ <p>Additionally, certain versions of Tomcat seem unable to
+ locate the <code>jndi.properties</code> file in the
+ <code>estore/WEB-INF/classes</code> directory. To work around
+ this, edit the <code>EJBUtil</code> file and add something that
+ reads the JNDI properties into system variables or into a
+ Properties object that you use to create the InitialContext.
+ It's easiest to throw this into a method that you call at the
+ beginning of every other method in the <code>EJBUtil</code>
+ class. For example:</p>
+<pre>
+if(System.getProperty("java.naming.factory.initial") != null)
+ return;
+try {
+ java.io.InputStream in =
Thread.currentThread().getContextClassLoader().getResourceAsStream("jndi.properties");
+ java.io.BufferedReader read = new java.io.BufferedReader(new
java.io.InputStreamReader(in));
+ String line;
+ System.out.println("Found jndi.properties");
+ while((line = read.readLine()) != null) {
+ int pos = line.indexOf("=");
+ System.setProperty(line.substring(0, pos), line.substring(pos+1));
+ }
+ read.close();
+} catch(java.io.IOException e) {
+ e.printStackTrace();
+ throw new GeneralFailureException(e);
+}
+</pre>
+
+ <h3><a NAME="petstore7">Prepare the Database</a></h3>
+ <p>The default configuration assumes the Cloudscape database.
+ The pet store package also includes an Oracle script (though
+ you may need to comment out the <code>drop table</code>
+ statements at the top for it to run the first time). If you
+ like, you can also use the PostgreSQL script contained in the
+ jBoss Petstore package, but then you'll need to copy the
+ <code>OrderDAOPostgreSQL.java</code> file to the
+ <code>src/com/sun/estore/order/ejb</code> directory, and update
+ the <code>OrderDAO.getDAO()</code> method to instantiate a new
+ <code>OrderDAOPostgreSQL</code> object when the database name
+ is "<code>PostgreSQL</code>" (just copy the other DB
+ configurations there).</p>
+ <p>Whichever product you're using, create a database or instance
+ or schema (the terminology varies) and then run the appropriate
+ script to populate it. Make sure your DB is running.</p>
+
+ <h3><a NAME="petstore8">Add DB Pool to jBoss</a></h3>
+ <p>The jBoss Petstore Package includes the files
+ <code>jboss.conf</code>, <code>jboss.jcml</code>, and
+ <code>jboss.properties</code>. The default configuration has
+ an Oracle DB pool and a PostgreSQL DB Pool. You should
+ update or replace these with a single DB pool that points
+ to your database. You will need to put your DB driver JAR
+ in the <code>lib/ext</code> directory of your jBoss
+ installation, and then edit these three files according to
+ the procedures in the <a HREF="adv_config.html#datasources">Data
+ Sources</a> section.</p>
+
+ <h3><a NAME="petstore9">Correct the Server Name</a></h3>
+ <p>If you look at the file <code>src/docroot/footer.jsp</code>
+ in the pet store directory, it has a line that prints
+ "<code>Running on</code>" and then tries to fetch the
+ server name. This call doesn't work in Tomcat or jBoss,
+ so just replace it with a hardcoded "<code>Tomcat+jBoss</code>"
+ or whatever you prefer.</p>
+
+ <h3><a NAME="petstore10">Add jBoss-Specific EJB Directives</a></h3>
+ <p>The jBoss Petstore Package includes the file
+ <code>estore-jboss.xml</code> which will become the
+ <code>jboss.xml</code> file in your EJB JAR. You should change
+ the <code>res-jndi-name</code> tag near the top to use the
+ name of the database pool you created - the default value is
+ "PostgresDB".</p>
+
+ <h3><a NAME="petstore11">Build and Deploy</a></h3>
+ <p>Run the <code>build.sh</code> script in the jBoss Petstore
+ Package to build the pet store EJB-JAR and deploy the pet
+ store to jBoss and Tomcat. It will create a context called
+ <code>estore</code> in Tomcat.</p>
+
+ <h3><a NAME="petstore12">Add User Accounts to Tomcat</a></h3>
+ <p>Edit the file <code>conf/tomcat-users.xml</code> in your
+ Tomcat installation. You should create an account with the
+ user name "<code>j2ee</code>", any password you like, and the
+ group "<code>customer</code>". If you create additional
+ accounts, they may also be in the "<code>gold_customer</code>"
+ group, and you need to add a record to the <code>ACCOUNT</code>
+ table with the same user name.</p>
+ <p><i>Note that if you are note using the SimpleRealm
+ authentication module in Tomcat, the procedures for adding a
+ user may differ!</i></p>
+
+ <h3><a NAME="petstore13">Add EJB Libraries to Tomcat</a></h3>
+ <p>You need to add a number of libraries to the Tomcat pet store
+ web app. These should go in the tomcat directory under
+ <code>webapps/estore/WEB-INF/lib</code>. The JARs you need
+ are distributred with jBoss (in the <code>clients</code>
+ directory): <code>ejb.jar</code>, <code>jboss-client</code>,
+ <code>jnp-client.jar</code>, <code>jdbc2_0-stdext.jar</code>,
+ and <code>jta-spec1_0_1.jar</code>. If you're running in
+ JDK <= 1.2.2, you also need <code>jndi.jar</code>.</p>
+
+ <h3><a NAME="petstore14">Start jBoss</a></h3>
+ <p>When you start jBoss, you should see it deploy the Pet Store
+ EJBs.</p>
+
+ <h3><a NAME="petstore15">Start Tomcat</a></h3>
+ <p>When you start Tomcat, you should see it deploy the estore
+ Context.</p>
+
+ <h3><a NAME="petstore16">Run the Pet Store</a></h3>
+ <p>Point your browser to
+ http://host.domain.com:8080/estore/index.html to start the
+ Pet Store. You must use a full domain name instead of localhost
+ for the session cookies to work. You must also start at
+ index.html because it defaults to index.jsp which is not the
+ correct page.</p>
+ <p>The only part of the pet store known to not work is creating
+ a new account. There is not a security implementation that
+ writes updates to the <code>tomcat-users.xml</code> file, or
+ uses the JDBCRealm in Tomcat.</p>
+
+ <hr>
+
+ <h2><a NAME="rmh">From <u>Enterprise JavaBeans</u> (Monson-Haefel)</a></h2>
+ <p>A common EJB-only example comes from the book
+ <a HREF="http://www.oreilly.com/catalog/entjbeans2/">Enterprise
+ JavaBeans, 2nd Edition</a> (Chapter 4). The examples need some
+ slight changes to run within jBoss, and you can download the
+ <a HREF="../rmh_jboss.zip">jBoss Version</a> if you just want to
+ cut to the chase. But if you'd like to get a better
+ understanding of the differences, here are the steps you'll need
+ to follow to update the examples. These directions are for UNIX,
+ but if you can convert a shell script to a batch file then you'll
+ be fine on Windows as well.</p>
+ <ol>
+ <li><A HREF="#rmh1">Download the Example Code</a></li>
+ <li><A HREF="#rmh2">Set the Environment</a></li>
+ <li><A HREF="#rmh3">Make the EJB Code Change</a></li>
+ <li><A HREF="#rmh4">Create a jBoss Deployment Descriptor</a></li>
+ <li><A HREF="#rmh5">Compile and Deploy the EJB Code</a></li>
+ <li><A HREF="#rmh6">Make the Client Code Changes</a></li>
+ <li><A HREF="#rmh7">Compile the Clients</a></li>
+ <li><A HREF="#rmh8">Start jBoss</a></li>
+ <li><A HREF="#rmh9">Configure JNDI for the Clients</a></li>
+ <li><A HREF="#rmh10">Run the Clients</a></li>
+ <li><A HREF="#rmh11">Example Notes</a></li>
+ </ol>
+ <hr>
+
+ <h3><a NAME="rmh1">Download the Example Code</a></h3>
+ <p>You can download the examples zip file from
+ <a
href="http://www.oreilly.com/catalog/entjbeans2/chapter/examples.zip">O'Reilly's
site</a>. Unpack it anywhere you like.</p>
+
+ <h3><a NAME="rmh2">Set the Environment</a></h3>
+ <p>You will need the jBoss libraries to compile and run the
+ examples. The scripts below locate that using the
+ <code>JBOSS_HOME</code> environment variable. So you need to
+ set the environment variable to point to your jBoss
+ installation. For example:</p>
+<pre>
+export JBOSS_HOME=$HOME/jboss
+</pre>
+
+ <h3><a NAME="rmh3">Make the EJB Code Change</a></h3>
+ <p>The beans are almost okay for jBoss, but you do need to make
+ one minor change: the reference made by
+ <code>TravelAgentBean</code> to <code>CabinBean</code>. In
+ jBoss, an EJB must refer to other EJBs using the
+ <code>java:comp/env</code> namespace. Edit
+ <code>com/titan/travelagent/TravelAgentBean.java</code>, and
+ replace
+<pre>Object obj = jndiContext.lookup("ejb/CabinHome");</pre>
+with
+<pre>Object obj = jndiContext.lookup("<b>java:comp/env/</b>ejb/CabinHome");</pre>
+
+ <h3><a NAME="rmh4">Create a jBoss Deployment Descriptor</a></h3>
+ <p>In order to link the EJB reference above to a valid EJB, you
+ need to create a jBoss Deployment Descriptor (a
+ <code>jboss.xml</code> file). You should create the file
+ <code>com/titan/travelagent/jboss.xml</code> with the following
+ contents:</p>
+
+<pre>
+<?xml version="1.0"?>
+<jboss>
+ <enterprise-beans>
+ <session>
+ <ejb-name>TravelAgentBean</ejb-name>
+ <ejb-ref>
+ <ejb-ref-name>ejb/CabinHome</ejb-ref-name>
+ <jndi-name>CabinBean</jndi-name>
+ </ejb-ref>
+ </session>
+ </enterprise-beans>
+</jboss>
+</pre>
+
+ <h3><a NAME="rmh5">Compile and Deploy the EJB Code</a></h3>
+ <p>You can use the following script to compile all the EJBs,
+ package them with the deployment descriptors, and deploy
+ them to jBoss:</p>
+<pre>
+#!/bin/sh
+
+# make cabin bean
+
+javac -classpath $JBOSS_HOME/lib/ext/ejb.jar:. \
+ com/titan/cabin/Cabin*.java
+
+cp com/titan/cabin/ejb-jar.xml META-INF/ejb-jar.xml
+jar cvf cabin.jar com/titan/cabin/Cabin*.class META-INF/ejb-jar.xml
+
+
+# make travelagent bean
+
+javac -classpath $JBOSS_HOME/lib/ext/ejb.jar:. \
+ com/titan/travelagent/TravelAgent*.java
+
+cp com/titan/travelagent/ejb-jar.xml \
+ com/titan/travelagent/jboss.xml \
+ META-INF/
+
+# jBoss needs the Home, Remote and primary key (PK) classes
+# of the Cabin in travelagent.jar so that TravelAgent*.class
+# can access the Cabin bean
+
+jar cvf travelagent.jar \
+ com/titan/cabin/CabinHome.class \
+ com/titan/cabin/Cabin.class \
+ com/titan/cabin/CabinPK.class \
+ com/titan/travelagent/TravelAgent*.class \
+ META-INF/ejb-jar.xml META-INF/jboss.xml
+
+rm -f META-INF/ejb-jar.xml
+rm -f META-INF/jboss.xml
+
+# deploy
+cp cabin.jar travelagent.jar $JBOSS_HOME/deploy
+</pre>
+
+ <h3><a NAME="rmh6">Make the Client Code Changes</a></h3>
+ <p>The client needs a few JNDI name changes as well, in the
+ following files:</p>
+ <dl>
+ <dt><code>com/titan/cabin/Client_1.java</code></dt>
+ <dd>
+<pre>Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");</pre>
+ should be replaced with
+<pre>Object obj = jndiContext.lookup("CabinBean");</pre>
+ </dd>
+
+ <dt><code>com/titan/cabin/Client_2.java</code></dt>
+ <dd>
+<pre>Object obj = jndiContext.lookup("ejb/CabinHome");</pre>
+ should be replaced with
+<pre>Object obj = jndiContext.lookup("CabinBean");</pre>
+ </dd>
+
+ <dt><code>com/titan/travelagent/Client_1.java</code></dt>
+ <dd>
+<pre>Object obj = jndiContext.lookup("ejb/CabinHome");</pre>
+ should be replaced with
+<pre>Object obj = jndiContext.lookup("CabinBean");</pre>
+ </dd>
+ </dl>
+
+ <h3><a NAME="rmh7">Compile the Clients</a></h3>
+ <p>You can use the following script to compile the clients:</p>
+<pre>
+#!/bin/sh
+
+javac -classpath $JBOSS_HOME/lib/ext/ejb.jar:. \
+ com/titan/cabin/Client*.java \
+ com/titan/travelagent/Client*.java
+</pre>
+
+ <h3><a NAME="rmh8">Start jBoss</a></h3>
+ <p>When you start jBoss, you should see the example EJBs
+ deployed.</p>
+
+ <h3><a NAME="rmh9">Configure JNDI for the Clients</a></h3>
+ <p>You need to make the clients aware of how to look up the
+ jBoss server. This is done in the run script below by
+ adding the <code>jboss/conf</code> directory to the
+ classpath, since that directory has a
+ <code>jndi.properties</code> file. You could also copy
+ that file to another location and add that location to
+ the classpath. Make sure the jBoss server hostname in
+ the property "<code>java.naming.provider.url</code>" is
+ correct in your <code>jndi.properties</code>.</p>
+
+ <h3><a NAME="rmh10">Run the Clients</a></h3>
+ <p>You can use a script like the following to run the
+ clients:</p>
+<pre>
+#!/bin/sh
+
+CP=$JBOSS_HOME/client/ejb.jar
+CP=$CP:$JBOSS_HOME/client/jta-spec1_0_1.jar
+CP=$CP:$JBOSS_HOME/client/jboss-client.jar
+CP=$CP:$JBOSS_HOME/client/jnp-client.jar
+CP=$CP:$JBOSS_HOME/conf
+# Necessary for JDK <= 1.2.2 only!
+CP=$CP:$JBOSS_HOME/client/jndi.jar
+
+java -cp $CP $1
+</pre>
+ <p>Then you just pass this script the class name of the
+ client to run, and it sets the classpath and runs the
+ client. For example:</p>
+<pre>
+./jBossRunClient.sh com.titan.cabin.Client_1
+./jBossRunClient.sh com.titan.cabin.Client_2
+./jBossRunClient.sh com.titan.travelagent.Client_1
+</pre>
+
+ <h3><a NAME="rmh11">Example Notes</a></h3>
+ <ul>
+ <li>The clients will only run once, since they use the
+ <code>EJBHome.create()</code> method. If you try to run
+ them a second time, you'll get a
+ <code>DuplicateKeyException</code>.</li>
+ <li>The output is a little more manageable if you to turn
+ off debug logging for these examples. Edit
+ <code>$JBOSS_HOME/conf/jboss.conf</code>, and in the
+ ConsoleLogging section, set the first <code>ARG</code>
+ to "<code>Error</code>".</li>
+ </ul>
+ <hr>
+
+ <h2><a NAME="jbosstest">jBoss Test Beans</a></h2>
+ <p>There is a test suite available for jBoss, which consists
+ of a number of EJBs that tests all facets of the server,
+ and the clients that go with them. Currently, the test
+ beans are only available from CVS. In order to build and
+ use the test beans, you must:</p>
+ <ol>
+ <li>Get the test beans from CVS. You can get directions for
+ checking things out of CVS if you go to the
+ <a HREF="http://www.jboss.org/">jBoss Home Page</a> and
+ follow the link on the left to CVS. Once you have your
+ CVSHOME configured and you have logged in, check out the
+ <code>jbosstest</code> module.</li>
+ <li>Build the beans. Go to the
+ <code>jbosstest/src/build</code> directory and run
+ <code>build.sh</code> (UNIX) or <code>build.bat</code>
+ (Windows).</li>
+ <li>Copy the EJB JARs to jBoss. Copy
+ <code>jbosstest/dist/deploy/*.jar</code> to
+ <code>jboss/dist/deploy</code>.</li>
+ <li>Start jBoss.</li>
+ <li>Run the clients scripts in
+ <code>jbosstest/dist/bin</code> to run the tests.</li>
+ </ol>
+ <p>The source code for all of the examples is under
+ <code>jbosstest/src/main</code> if you'd like to see
+ how the test beans work.</p>
</body>
</html>
1.11 +3 -3 jbossweb/manual/index.html
Index: index.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/manual/index.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- index.html 2000/10/10 04:18:30 1.10
+++ index.html 2000/10/12 18:13:21 1.11
@@ -139,9 +139,9 @@
<p CLASS="tc2">What You Can (Conveniently) Replace</p>
<p CLASS="tc2">What You Can (Conveniently) Add</p>
<p CLASS="tc1"><a CLASS="plain" HREF="examples.html">Examples</a></p>
- <p CLASS="tc2">From <U>Enterprise JavaBeans</U> (Monson-Haefel)</p>
- <p CLASS="tc2">jBoss Test Beans</p>
- <p CLASS="tc2">Other Examples</p>
+ <p CLASS="tc2"><a CLASS="plain" HREF="examples.html#petstore">J2EE
Blueprints: Pet Store</a></p>
+ <p CLASS="tc2"><a CLASS="plain" HREF="examples.html#rmh">From <U>Enterprise
JavaBeans</U> (Monson-Haefel)</a></p>
+ <p CLASS="tc2"><a CLASS="plain" HREF="examples.html#jbosstest">jBoss Test
Beans</a></p>
<p CLASS="tc1"><a CLASS="plain" HREF="trouble.html">Troubleshooting</a></p>
<p CLASS="tc2">Identifying Your Problem</p>
<p CLASS="tc2">Verification Problems</p>
1.1 jbossweb/manual/jboss-petstore.tgz
<<Binary file>>