<?xml version="1.0"?>
<document url="./installation-jr30.xml">

  <properties>
    <author>Eric Wu</author>
    <title>The Struts Framework Project - Installation - JRun 3.0</title>
  </properties>

  <body>

<section name="Installing Struts with your servlet container" href="Containers"> 

<h3><a name="jrun">JRUN 3.0 SP2A, VERSION 3.02A.11614</a></h3>

<b>Tested with: Microsoft IIS 5.0, Windows 2000</b>

<h4>Important Note:</h4>

<p>At the moment, JRun is not fully compliant with the JSP 1.1/1.2
specification. </p>

<p>Specifically, the automatic type conversions for custom tag parameters 
specified in "Issue  7" of the JSP 1.1 Errata and in the JSP 1.2 Proposed 
Final Draft have not yet been implemented.</p>

<p>As it stands, JSP pages that make use of Struts taglibs whose parameters
require  conversion (such as booleans) will not compile under JRun. This 
includes the Struts Example Application. Attempting to run the example 
application will result in an exception similar to the following being 
thrown:</p>

<pre>
/struts-example/index.jsp:

javax.servlet.ServletException: Compilation error occured: 

allaire.jrun.scripting.DefaultCFE: 

Errors reported by compiler:
c:/JRun/servers/default/Struts 
  Example/WEB-INF/jsp/jrun__index2ejspa.java:41:1:41:27: 

Error: No match was found for method "setLocale(java.lang.String)".
</pre>

<p>(For more details see refer to:<br/>
<font size="-1"><a href="http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01860.html">http://www.mail-archive.com/struts-user@jakarta.apache.org/msg01860.html</a></font>)</p>

<p>The following instructions describe how to install the Struts Example
Application under JRun. A subsequent section describes how the Struts Example 
Application can be patched to work with Struts</p>

<p>The following instructions assume the following:</p>

<ul>
<li>JRun has been installed and integrated with the web server of choice.</li>

<li>$APP_SERVER_NAME is the name of the application server used to host the 
  application.  (When JRun is first installed, it creates an application 
  server called JRun Default Server).</li>

<li>$APP_SERVER_DIR is the directory used to hold applications hosted by 
  $APP_SERVER_NAME.  For the JRun Default Server, the directory is 
  $JRUN_HOME/servers/default where $JRUN_HOME is the directory where 
  JRun is installed.</li>
</ul>

<h4>Installing the struts example application</h4>

<ul>
<li>Login to the JRun Management Console.</li>

<li>On the left pane, select $APP_SERVER_NAME. A page showing the
  current server status will be shown on the right pane.</li>

<li>On the right pane, click on the WAR Deployment link. A page
  containing a list of the currently deployed web applications will be 
  shown.</li>

<li>On the right pane, click on Deploy an Application. Complete the Web 
  Application Information form as follows:</li>
  
  <ul>
  <li>Servlet War File or Directory:  Enter the full path where
      struts-example.war is found or click on Browse to select 
      the path.</li>
  <li>JRun Server Name:  $APP_SERVER_NAME</li>
  <li>Application Name:  Struts Example</li>
  <li>Application Hosts:  All Hosts</li>
  <li>Application URL:   /struts-example</li>
  <li>Application Deploy Directory:  will default to 
      $APP_SERVER_NAME/Struts Example (or the name as specified for 
      Application Name).</li>
  </ul>

<li>Once the form is complete, click on the Deploy button.</li>

<li>If deployment is successful, restart the application server by
  clicking on <code>$APP_SERVER_NAME</code> on the left pane. A page showing the 
  current server status will be shown on the right pane. Click the 
  Restart Server button to restart the application server.</li>

<li>Test the sample application by using the following URL in the
  browser:<br/>
    <code>http://hostname/struts-example/index.jsp</code><br/>
  The struts-documentation.war can be installed using the same 
  procedure.</li>
</ul>

<h4>Installing unpacked web applications</h4>

<p>The above steps should be followed for applications deployed as <code>*.war</code> files.</p>

<p>For unpacked web applications, configuration involves the following steps:</p>

<ul>
<li>From the JRun Management Console, select <code>$APP_SERVER_NAME</code> (on the
  left pane) and click on WAR Deployment (on the right pane).</li>

<li>On the right pane, click on Create an Application and complete the
  Web Application Information form as follows:</li>

<li>JRun Server Name:  $APP_SERVER_NAME</li>

  <ul>
  <li>Application Name:  myApplication</li>
  <li>Application Hosts:  All Hosts</li>
  <li>Application URL:   /myApplication</li>
  <li>Application Deploy Directory:  will default to<br/>
    <code>$APP_SERVER_NAME/myApplication</code></li>
  </ul>

<li>Click on Create to submit the form.</li>

<li>Once the web application is created, install and configure the struts
  components (struts.jar, struts*.tld, etc) for the web application under 
  <code>$APP_SERVER_NAME/myApplication/WEB-INF</code></li>
  
<li>Install the remaining components of the application:  .class files,
  JSP pages,.properties files etc  as required.</li>

<li>To configure the extension mapping of the request URI (ie *.do) to
  the action servlet, expand <code>$APP_SERVER_NAME</code> on the left pane, expand 
  the Web Applications branch and click on myApplication. The right pane 
  will display the configuration options for myApplication. Click on 
  Servlet URL Mappings. A list of existing mappings will be shown. Click 
  the Edit button and create the following entry:</li>
  
  <ul>
  <li>Virtual Path/Extension:   *.do</li>
  <li>Servlet Invoked:  action</li>
  </ul>

<li>Click on the Update button to save the changes.</li>
<li>Restart the application server.</li>
<li>The application should now be accessible from the browser.</li>
</ul>

<p>The JRun application server will need to be restarted each time one of the
following changes are made to the web application:</p>

<ul>
<li><code>.class</code> or <code>.jar</code> files are modified</li>
<li><code>.properties</code> files are modified</li>
<li><code>.xml</code> files are modified</li>
</ul>

<h4>Patching the struts example application</h4>

<p>As mentioned at the beginning of these notes, the Struts Example Application
will not run under JRun without modification.  The following changes will need 
to be made:</p>

<ul>
<li>index.jsp, logon.jsp: Change &lt;html:html locale="true"> to <br/>&lt;html:html locale=&lt;%= true %>></li>
<li>registration.jsp, subscription.jsp: Change all instances of filter="true" to <br/>filter=&lt;%= true %></li>
</ul> 
  <hr/>
  <ul><li>Author: Eric Wu</li></ul>
  <hr/>
  <p>Back to <a href="installation.html#Containers">Installation</a></p>
</section>
</body>
</document>
