JRun Server 3.1 release notes

This document addresses issues that are not discussed in the JRun documentation and may be updated as more information becomes available.

System requirements
New features
Late-breaking news
Migration issues
Installation instructions
Fixed bugs
Known issues

System requirements

System Requirements
32 MB RAM (128 recommended)
20 MB hard disk space (50 recommended)
Java Runtime Environment (JRE) 1.1 (version 1.2.2 or later required for EJB, JTA, and JMS)
Netscape Communicator 4.0 or Microsoft Internet Explorer 4.0 (or higher) for administration
Supported Operating Systems
Windows 95/98/NT/XP/2000
Solaris 2.6, 7, 8
32 MB of available RAM
135 MB of available disk space
IBM AIX 4.2, 4.3
Compaq Tru64 UNIX 4.0
Supported Web Servers
Microsoft IIS
Microsoft Personal Web Server
Netscape Enterprise Server
Netscape FastTrack Server
Netscape iPlanet
O'Reilly WebSite Pro
Zeus Web Server

New Features

J2EE compliance
SSL support
Single sign-on support
JDBC drivers in JRun Developer Edition
JSP custom tags written in JSP
Dynamic deployment and update for Web applications
JSP custom tag handler caching
Support for parameters to CMP finder methods
JSPC enhancements
New and enhanced samples
Windows version ships with the 1.3 JRE

See the JRun Version 3.1 Features and Migration Guide for information on J2EE compliance and single sign-on support. This manual is available from the documentation home page, found at JRun_rootdir/docs/dochome.htm.

J2EE compliance

JRun Server 3.1 is J2EE compliant. With this release, JRun Server has passed 100% of the Sun Compatibility Test Suite (CTS) that ensure compliance to the J2EE 1.2 specifications.

SSL support

Secure Sockets Layer (SSL) is a commonly-used protocol for managing the security of a message transmission on the Internet. JRun 3.1 supports SSL in the JRun Web server and exposes this support through the JMC. This gives you the ability to create highly secure Web applications.

Note: JRun 3.1's SSL capabilities support secure sockets between the browser and JRun's built in Web server. JRun 3.1 does not secure the socket between the browser and a native Web server. Most commercial Web servers have this built in already, so there is no need for JRun to provide it. (Apache is an exception, in that you have to add an SSL module or buy Apache from a vendor that has added it.) Note that the socket between the native Web server and JRun's connector does not support SSL.

For more information on SSL, refer to "SSL and TLS Essentials" by Stephen Thomas, Wiley Computer Publishing, 2000.

Helpful online resources including SSL tutorials for different Web servers, can be found at

In addition, you can access detailed technical information, as follows:

Single sign-on

JRun 3.1 enables you to create applications that authenticate users with a username/password combination and carry that authentication across servlets, JSPs, and EJBs. This is a major feature and is documented in the JRun 3.1 Features and Migration Guide.

JDBC drivers in JRun Developer Edition

JRun 3.1 Developer Edition now supports database connections using the JDBC type 4 drivers shipped with JRun. This functionality was previously only available in the Advanced and Enterprise editions.

JSP custom tags written in JSP

JRun 3.1 includes support for JSP custom tags written in JSP. This technology allows you to build a custom tag by writing a JSP rather than a tag handler class and a tag library descriptor (TLD) file. This feature is documented in Developing Applications with JRun.

Dynamic deployment and update for Web applications

JRun 3.1 introduces dynamic update and automatic deployment for Web applications. This is a major ease-of-use feature, which provides the following capabilities:

  • Hot deployment - Automatic restart of a running Web application upon detection of physical changes to the existing Web application structure (for example, an updated WAR file or a change to the web.xml file).
  • Auto deployment - Automatic deployment of a new Web application upon detection of a new WAR file.

By enabling hot deployment and auto deployment, you no longer have to restart the JRun server after changes to a Web application or adding a new Web application. Note that you must still restart the JRun server after server-level changes, such as adding a JDBC data source.

Note: It is strongly advised that you disable this feature in the production environment.

  • admin server - Disabled (webapp.hotdeploy.enabled=false in admin/
  • jmc-app (admin server) - Disabled (webapp.hotdeploy.enabled=false in admin/jmc-app/WEB-INF/
  • default application - Enabled (trickles down from webapp.hotdeploy.enabled=true in
  • default server - Enabled (trickles down from webapp.hotdeploy.enabled=true in
  • default-app - Enabled (trickles down from webapp.hotdeploy.enabled=true in
  • demo-app - Enabled (trickles down from webapp.hotdeploy.enabled=true in
  • invoice-app - Enabled (trickles down from webapp.hotdeploy.enabled=true in

Hot deployment

You control dynamic deployment through the following properties in the and files:

  • webapp.hotdeploy.enabled=true|false - Enables or disables dynamic deployment.
  • webapp.hotdeploy.interval=interval - Specifies how often JRun checks for changes (in seconds). The default is 5 seconds. Setting this value to zero disables the hotdeploy service.
  • webapp.hotdeploy.onchange=comma-separated list of directories and files - Specifies the directories and files monitored by JRun. If any of these files change, JRun automatically restarts the Web application and writes a "hot deploy initiating" message to the log file. The default setting is as follows:
  • webapp.hotdeploy.defaultname=default-app war file - Specifies the name of the WAR file that should be mapped to the default context (that is, a URL of /). The default is default.war. In most cases, a Web application uses /webappname as the context, however the default application simply uses a slash. For more information, see "How JRun Maps Requests to Servlets" in Developing Applications with JRun.

If the changed file is a WAR file, JRun uses the previously defined root directory and URL mapping to redeploy the Web application and then restarts it. If the changed file is not a WAR file, JRun simply restarts the Web application.

Auto deployment

You control automatic deployment through the following property in and

  • webapp.hotdeploy.autodeploy=file locations - Any new WAR files found in the specified location will be deployed automatically. JRun checks this location upon server startup and also monitors for new files while the server is running.
  • The default setting is as follows:


When deploying WAR files automatically, JRun creates a Web application name and URL mapping using the WAR-file name without the extension and expands the WAR file into the /servers/server name/Web application name directory. For example, if you add newapp.war to root level of the default server's deploy directory, JRun creates the following:

  • Web application name: newapp
  • URL mapping: /newapp
  • Application root directory: default-server-root/newapp

You can control the directory structure JRun creates by storing the WAR file in a subdirectory under the deploy directory. For example, if you save a WAR file in deploy/accounting/payroll.war, JRun creates a Web application named accounting-payroll with a URL mapping of /accounting/payroll.

Caching for JSP custom tag handlers

JRun 3.1 improves JSP custom tag performance by caching tag handler objects. Tag handler developers should note the following:

  • Tag handlers are cached per instance per page. For example, if a JSP calls the same custom tag twice, JRun caches two instances.
  • If your tag handler performs any kind of state management, you will have to implement the Tag.release method to perform clean up before JRun caches the tag instance.

Support for parameters to CMP finder methods

JRun 3.1 includes support for parameters to EJB finder methods. In JRun 3.0, EJB finders could only get this information from bean instance fields. You can now call findBy methods passing parameters, which are specified in the CMP bean's SQL, as follows:

select key from table where value >?1 and value < ?2

Where ?1 and ?2 represent the first and second arguments to the findBy method.

JSPC enhancements

The JSPC compiler is a command-line tool that you use to compile JSPs outside the context of a Web server. With the JSPC compiler, you can explicitly compile JSPs from a command line, rather than using JRun to compile them upon a request of the JSP.

As of JRun 3.1, JSPC syntax has been modified. The new syntax is as follows:

java [-classpath classpath]
  -j jrun_root_dir
  -s server
  -a web_application_name
  [-webroot path_to_web_root] 

  [-d output_directory] 
  [-compiler "compiler_spec"] 

classpath - (Optional) Specifies the classpath to the java command. You can specify it either on the command line or by using the CLASSPATH environment variable. The following paths must be specified in the classpath:

  • All JAR files in the JRun_rootdir/lib directory
  • All JAR files in the directory JRun_rootdir/lib/ext directory

Depending on your compiler, you may have to specify additional files shipped with your JDK Additional parameters are as follows:

j - Specifies the JRun root directory.

s - Specifies the server name.

a - Specifies the Web application name.

webroot - (Optional) Specifies the full path to the Web application’s root directory. This argument is required for Web applications for which the use-webserver-root property is set to true. You can optionally abbreviate this to -w.

v - (Optional) Specifies to display the name of each JSP file as the JSPC compiles it.

g - (Optional) Specifies to display debug messages.

h - (Optional) Specifies to display the JSPC compiler help message.

n - (Optional) Specifies to compile only JSPs that are newer than the corresponding .class file.

d - (Optional) Specifies where you want the JSPC compiler to write the output .class and .java files. By default, this directory is set to the current working directory. Typically, you specify the WEB-INF\jsp directory under the directory structure of a Web application.

compiler - (Optional) Specifies a quoted string containing the compiler and compiler settings to use for the compile. If you omit this parameter, JRun compiles JSPs in-process using the Sun javac compiler. For example:

java JSPC -compiler "javac -nowarn -classpath %c -d %d %f" ...
java JSPC -compiler "jvc /cp:c %c /dest: %d %f" ...

JSP_path - Specifies the physical path of the JSP on your file system relative to the Web application by the -a parameter. You can specify multiple files, separated by spaces. You can use wildcard symbols to specify multiple files. The directory specified by -a and the JSP_path are combined to specify the JSP compiled. For example, if -a is a Web application located in c:\myapps\store and the JSP that you want to compile is named is c:\myapps\store\my.jsp, the JSP_path for the page is my.jsp. You can include wildcard symbols in the JSP_path if you are compiling multiple JSPs.

Note: You must specify the -webroot argument when using the JSPC compiler to process Web applications that have the use-webserver-root property set to true. For example, the default application in the default JRun server has use-webserver-root set to true. For more information, see Chapter 10 of Developing Applications with JRun.

New and enhanced samples

JRun Version 3.1 contains an enhanced suite of samples. As before the samples run in the default server and are accessible from the JMC Welcome page. The enhancements to the samples include the following:

New Web application - The samples now include an additional Web application that show a fax cover sheet generator and an invoice generator. The invoice generator includes three different versions, each demonstrating a different coding practice (straight JSP, JavaBean, and JSP custom tag). This Web application includes usage notes and colorized source code display.

Database integration - The samples ship with a PointBase embedded database. The JRun custom tag samples and EJB samples have been modified to use this database. Note that this database is included primarily to support the samples and can connect to only one JVM at a time. The JMC's JDBC data source test feature does not work for data sources that use this database. Note that when you are using PointBase, Java objects should be mapped to OTHER rather than VARBINARY; OTHER indicates that the SQL type is database-specific and gets mapped to a Java object that can be accessed via the getObject and setObject methods.

Enhanced custom tag samples - Custom tag samples have been cleaned up and now include working database access code as well as easy access to colorized source code display.

Enhanced EJB samples - EJB samples have been integrated with the sample database and now provide more standard examples of EJB coding practice. Also, an additional servlet sample, 9b, has been added. With the addition of a working relational database, the samples that demonstrated usage (samples 1a, 1b, 4a, and 7a) were removed.

Windows version ships with JRE version 1.3

The Windows version of JRun 3.1 ships with version 1.3 of the Java Runtime Environment (JRE). In most cases your machine will already have a JRE installed as part of the JDK, but if it doesn't, you can install the JRE at the same time you install JRun.

Note: The 1.3 JRE includes a bug that causes JRun servers installed as NT services to stop when the user logs off of Windows NT/2000. The JRun support team has created a Knowledgebase article that describes a workaround for this problem (

Late-breaking News

JRun Tag Library tag attributes added
Jikes compiler included for JSPs
Scriptlet syntax for writing to a log changed

JRun Tag Library tag attributes added

The JRun Tag Library getmail tag now has the following attributes that are not covered in the JRun Tag Library Reference:

Optional; java.lang.String.
Determines whether e-mail attachments can be overwritten by new attachments with the same filename. Defaults to false.
Optional; java.lang.String.
Specifies the directory path where e-mail attachments should be stored. Defaults to the application server's current working directory.
The JRun Tag Library servlet tag now has the following attribute that is not covered in the JRun Tag Library Reference:
Optional; java.lang.String.
Specifies the servlet to be invoked with query strings. Use the code attribute only to specify servlet names.

Jikes Compiler included for JSPs

The final release of JRun 3.1 includes the Jikes compiler for compiling JSPs. Beta versions of JRun 3.1 did not include Jikes.

Scriptlet syntax for writing to a log changed

In a JRun 3.0 JSP scriptlet, you could write to the log by coding either application.log("log text") or log("log text"). In JRun 3.1, you must code application.log("log text"); log with no prefix is no longer supported.

Migration Issues

Migrating to JRun Version 3.1

Servlets and JSPs have few, if any, migration issues. However there are many EJB-related migration issues. For more information, see the JRun 3.1 Features and Migration Guide, accessible via the JRun_rootdir/docs/dochome.htm page.

Installation instructions

Installing JRun 3.1

JRun 3.1 is a complete new install. You will be able to run both JRun 3.0 and JRun 3.1 on the same server and run them concurrently. You can install JRun 3.1 when JRun 3.0 is installed and running, but with the following problems:

  • The service names are the same. If JRun 3.0 is installed as a service, you cannot install JRun 3.1 as a service.
  • In order for the installer to generate unique port numbers, JRun 3.0 must be running when you install JRun 3.1. Otherwise, JRun 3.1 could be assigned default port numbers already assigned to JRun 3.0. If JRun 3.0 is down while installing JRun 3.1, the installer will not generate unique port numbers.

Note: (EJB users only) The installer does not generate unique port numbers for ejb.classServerPort and ejb.HomePort; if you are using EJBs on both JRun 3.0 and JRun 3.1, you must manually set unique port numbers. Modify the file for the admin and default servers, providing unique port numbers for ejb.classserver.port and ejb.homeport.

Note: If you upgrade from JDK 1.1.8 to JDK 1.2 or higher after you have already installed JRun 3.1, you must remove the following entry from the javaargs property in the JRun_rootdir/lib/ file:


Windows install filename:

jrun-31-win-us.exe - JRun 3.1 full install for Windows platforms.

UNIX and Linux install filename: - JRun 3.1 full install for all UNIX and Linux platforms.

NOTE (UNIX and Linux installs only): UNIX installation and update kits can be used on any supported Linux or UNIX system. You may notice that this has caused an increase in the size of the UNIX kit. The update install procedure includes instructions on removing platform-specific binaries to help reduce the install footprint.

This section covers the following topics:

Windows installation

For additional information on performing a JRun installation, see the JRun Setup Guide.

If you try to install JRun Version 3.1 and already have JRun 3.0 installed in the same location, you will be prompted to uninstall JRun before continuing. You must then restart your machine.

To install JRun Version 3.1 on a Windows machine, perform the following steps:

  1. Stop your Web server if you are going to run the Connector Wizard at the end of the install.
  2. Exit all currently running Windows applications.
  3. Execute the JRun installation file jrun-31-win-us.exe.

    The JRun splash screen appears.

  4. Click on the version of JRun 3.1 you would like to install under the Install section.

    To deploy EJBs, you must have a JDK (not just a JRE) 1.2 or higher. You can get the Sun JDK from

    The Welcome window appears.

  5. Click Next.

    The License Agreement window appears.

  6. Click Yes to accept the JRun License Agreement or No to cancel the installation.

    The Product Serial Number window appears.

  7. Enter the serial number exactly as it was provided to you by Allaire and click Next.

    If you are installing the JRun Developer Edition or an evaluation version of JRun, leave the field blank (the default). If you are upgrading from a previous version of JRun, enter your new serial number. You will then be prompted for your old JRun version 2.x license key.

    The Installation Folder window appears.
  8. Select a destination folder for JRun and click Next.

    The Setup Type window appears.

  9. Select the type of installation and click Next.
  10. (Optional) If you selected Custom, choose the desired JRun components and click Next. Otherwise, continue with the next step.

    The Select Program Folder window appears.

  11. Select a program folder name for JRun and click Next.
    JRun installs the requested files. The Install JRun Services window appears.
  12. Choose whether or not to have the JRun servers start automatically and click Next.

    If you select Install JRun Services, the JRun Admin Server and JRun Default Server start up every time the machine boots. On NT, they are installed as NT services, which run as system processes rather than as user processes. On Windows 95/98, the servers are referenced in the Windows registry and automatically start on reboot. If you do not select Install JRun Services, the JRun servers run as applications and must be started manually.

    The Select a Java Runtime window appears.

  13. Select a runtime environment for Java and click Next.

    To use JRun's Enterprise JavaBeans components you must select a JRE version 1.2.2 or later.

    The JVM Advisor appears.

  14. Verify that the information in the JVM Advisor is acceptable and click Next.

    The JRun Management Console Admin Port window appears.

  15. Enter a unique port number that you will use to access JRun's administrative Web application on the JRun Web Server and click Next.

    The JRun Web Server (JWS) listens on this port to provide access to the JRun Management Console (JMC). The default port number is 8000.

    Do not select a port number between 8100 and 8199. JRun uses a port in this range for the default JRun server's JWS.

    The JRun Management Console Password window appears.

  16. Enter and confirm the password for the JRun administrator (admin) and click Next.

    Do not use spaces or the asterisk (*) character in the password.

    After the JRun installer creates the appropriate directories and extracts the system files, the Product Information window appears.

  17. Optionally, enter your name and e-mail address in the fields provided. Select the checkboxes to receive information about Java application developments and/or notifications about JRun and click Next.

    The Setup Complete window appears.

  18. To configure the connection between JRun and your external Web server (such as Apache or IIS), select the first radio button and click Finish. JRun launches the JRun Management Console and prompts you to log in. Once you log in, JRun brings you to the Connector Wizard.
  19. For instructions on logging in and finishing the configuration, see the JRun Setup Guide, which was installed to the JRun_rootdir/docs/pdf directory.
  20. To configure your external Web server later, select the second radio button and click Finish. JRun opens the JRun Management Console.

UNIX and Linux installation

For additional information on performing a JRun installation, see the JRun Setup Guide.

If you try to install a JRun Version 3.1 and already have JRun 3.0 installed, you will be prompted to uninstall JRun before continuing. You must then restart your machine.

To install JRun Version 3.1 on a UNIX or Linux machine, perform the following steps:

  1. Stop your Web server. You must do this if you are going to connect JRun to your Web server.

    Make sure you have already installed the desired Java Runtime Environment (JRE) on your machine. A JRE 1.1.6 or higher is required for JSP/servlets, and JRE 1.2 or higher is required for EJB support. You can obtain Sun's JRE from the following Web site:

  2. Set execute permission for the file, the JRun installation shell script, using the following command:

    chmod 755
  3. Execute the JRun installation script using the following command:

    /bin/sh ./

    JRun asks you to read the license agreement.

  4. Press Enter to view each page of the license agreement.

    JRun prompts you to accept the license agreement.

  5. Enter y to accept the agreement or n to cancel the installation.

    JRun prompts you to enter the installation directory

  6. Enter a directory to install JRun into. This directory will be referred to as the JRun_rootdir in this document. The default is /opt/JRun.

    JRun prompts you to select the type of installation to perform. You can select either Typical or Custom.

    If you select Typical, JRun installs all components. If you select Custom, you are prompted with the following options:

    1. Servlet and Java ServerPages
    2. Enterprise Java Beans and Java Message Service
    3. All
  7. Enter the type of installation.

    JRun unpacks and copies all the files necessary for your installation and then prompts you to enter the absolute path to your JRE or JDK directory.

  8. Specify the location of your JRE/JDK. Typically, the JRE/JDK is installed in /usr/java, but it may be in a different location on your system.

    If you select a JRE/JDK prior to 1.2, JRun's Enterprise JavaBeans components will not work correctly.

    JRun prompts you to enter your license key

  9. Enter the license key exactly as it was provided to you by Allaire.

    If you are installing the JRun Developer Edition or an evaluation version of JRun, leave the entry blank (the default). If you are upgrading from a previous version of JRun, enter your new upgrade key. You will then be prompted for your old 2.x license key.

    JRun prompts you to enter a password for the JRun administrator.

  10. Enter a password. Do not use spaces or the asterisk (*) character in the password.

    JRun prompts you to enter a port number.

  11. Enter a unique port number that you will use to access JRun's administrative Web application on the JRun Web Server. The JRun Web Server (JWS) listens on this port to provide access to the JRun Management Console (JMC). The default port number is 8000.

    Do not enter a port number between 8100 and 8199. JRun uses a port in this range for the default JRun server's JWS.

    JRun prompts you to receive information about Java application developments and/or notifications about JRun.

  12. Choose whether or not to receive this information.

    If you entered Yes, JRun then prompts you for your name and e-mail address.

  13. Enter your name and e-mail address.

    JRun prompts you to either open the JMC URL or the demo URL in your browser.

    To continue with the configuration and connect JRun to your external Web server, open the URL for the JRun Management Console (JMC).

  14. For instructions on running the Configuration Wizard, see the JRun Setup Guide, which is installed in the JRun_rootdir/docs/pdf directory.

Fixed Bugs

Fixed Bugs in JRun Version 3.1

The following problems have been fixed in JRun Version 3.1:

24767 - The Windows custom installation for EJB only (no web/servlets, demos, or documentation) failed to install a necessary file, JRun_rootdir/lib/ejb-jar_1_1.dtd. It does install unnecessary files, JRun_rootdir/samples/taglib/*

13384 - Servlets and jsp files did not work when SSL was enabled for Netscape FastTrack Server 3.01 on Windows NT.

13689 - The errorurl property did not work when specified in an obj.conf file.

15918 - On Windows NT, the JRun Service would not start if the EJB service was running and the system's regional settings were set to Turkish. The following error was displayed: "Error: invalid certificates".

16095 - The <ejb-ref> tag (allows aliases to be created for entity beans) in an EJB's XML deployment descriptor (found nested in the <entity> tag) didn't work.

16377 - The JMC now suggests a free port whenever establishing settings that require a port number.

17003 - Step 2 of the JRun connector wizard now includes a default value for the JRun Server Connector port.

17081 - Network errors would sometimes occur when restarting the admin server remotely.

17412 - The JSPC compiler disregards the -d parameter and dumps all class files in the /jsp directory.

17454 - Broken pipe/socket write errors occurred when displaying JRun documentation from the JMC.

17598 - When index.jsp is entered as the default document for a Web application in the JMC, the <welcome-file-list> element in the web.xml file was not updated properly.

17692 - EAR files with neither a properties file nor an XML descriptor deploy properly but return an "Error loading beanname properties" message when clicking the JAR file in the JMC.

17734 - NumberFormatExceptions were returned by the JMC when expanding a Web application by clicking on the description instead of the box.

17815 - When using the Japanese edition of JRun, the sendmail custom tag did not work if the subject attribute was omitted.

17941 When using an XML deployment descriptor, a large number of env-entry fields for an EJB would cause the Deploy tool to exit with an OutOfMemoryError.

18007 - Client IP filtering did not always work when multiple IP addresses were entered.

18645 - JRun was improperly encoding path parameters in URLs. The Servlet 2.2 API specification specifies that path parameters are preceded by a semicolon (for example,;jsessionid=1234). JRun was using a question mark (for example, JRun now uses a semicolon.

18798 - After completing a JRun installation on a slow machine (for example 233Mhz), the initial HTML page displayed an error because the admin server had not finished its startup process.

18973 - The Web server was configured with default.jsp as the default page and default.jsp issued a response.sendRedirect() or jsp:forward to another directory that also had a default.jsp page, the resulting URL was encoded with jsessionid in the URL, if the jsessionid cookie was accepted in the browser.

19002 - When running the command line WarDeploy with the -redeploy option, JRun removed the application mappings from the file but did not re-add them.

19141 - The response.getOutputStream() method was not working properly in JSPs.

19133- RequestURI on a forwarded request was incorrectly returning the URI with the servlet context included.

19197 - Global.jsa was misspelled in the JMC at Jrun Default Server > Web Applications > JRun demo > Java Server Pages.

19359 - JSPs that used custom tags and included other JSPs that used custom tags, would return a "500 Internal Server Error. Duplicate declaration of local variable" error.

19623 - Step 2 of the Connector Wizard now checks for unused ports and suggests a port for the Proxy Port setting.

19865 - The length of the JRun java command line was reduced by moving most -D parameters into the or file.

19899 - Using a applet to call a servlet returned a Socket input stream error in the event log.

20019 - Cookies were not set when calling a servlet from an SHTML file.

20023 - Running the XSLT custom tag example returned a JspTagException

20028 - Users were unable to switch between users (chief, saver1, spender1) when running EJB sample9a.

20094 - EJB Sample2b ran with errors.

20219 - If you selected "specify Java runtime location" when installing on Windows NT but did not actually specify a directory, JRun completes the install but will not run.

20362 - Calling a business method after calling remove on a stateless session bean returned an exception, even though the EJB 1.1 specification defines this as a valid action.

20380 - According to the EJB 1.1. spec. section 9.1.6, Table 4, under setEntityContext() - getCallerPrincipal(), isCallerInRole(), getEJBObject() are not allowed in that context and should cause an IllegalStateException. JRun was allowing these method calls and not throwing the exception.

20495 - When the JDBC Wizard completed, it left up a 2nd instance of the JMC.

20452 - The JMC was clearing out fields during Web application deployment.

20508 - Mistakes made when editing a Web application via the JMC caused the JMC to remove the application from the list of deployed Web applications.

21341 - After installing the Apache native connectors for the IBM HTTPServer Web server, the Web server core dumped. The connector has been updated to solve this problem.

21415 - Empty src attributes were causing NumberFormatExceptions in the JMC.

21531 - The JMC was not displaying a "must restart JRun server" message after adding a data source.

21647 - JRun threw an IllegalStateException if you called getRollbackOnly() and setRollbackOnly() from an ejbCreate() method. These are allowable methods according to Chapter 9, Table 2 of the EJB 1.1 specification.

22047 - The JRun ResourceAuthenticator was performing a case-sensitive match on directories when performing authentication (form or basic).

22229 - EJB sample 6b did not work on Windows 2000.

22303 - If you did not fill in the database name in Step 2 of the JDBC Wizard, a Javascript error occurred when you clicked Next.

22313 - Using j_security_check was not working correctly with multiple secure directories.

22349 - Form-based authentication did not work correctly when session swapping was used.

22459 - Deploying an EJB JAR file from the JMC sometimes returned a "Please correct the following errors and click 'deploy' again:" error message.

22641 - If you deleted an EJB via the JMC, it did not delete and from the deploy directory. As a result, the JRun server would not start because it was looking for classes that no longer exist.

22819 - Printing a null value to the output via response.getOutputStream() returned a null pointer exception.

22905 - Enforced JSP specification regarding attribute handling. For example, <foo:Bar jeo=<%= baz %>/> will no longer work. Instead, you must specify <foo:Bar jeo="<%= baz %>";/>. This fix also removed support for an undocumented shortcut that allowed you to specify <foo:Bar jeo="%= baz %"/>.

23065 - The jsprt servlet was not disabling JSP compilation.

23156 - The JMC's SSL functionality was incomplete.

23212 - ejbLoad was being called too many times in Sample 5a, causing the sample to run slowly.

23435 - Entitized < and > characters to fix cross-site scripting vulnerability.

23437 - The uri element in a TLD wasn't resolved properly at translation time if the URI was an http://hostname/resource-style URI.

23483 - IPlanet 4.1 with JRun connector configured for verbose="true" did not allow the iPlanet Web server to start on Solaris.

23513 - The <jsp:plugin> tag was generating empty text.

23673 - Infinite loop occurred when accessing a stateful session bean in a transaction context.

23679 - After creating a new server via the JMC, starting that server generated a message in the server-error.log file but the server still started.

23799 - The QueryTable.getBigDecimal method (part of the JRun Tag Library) returned a StackOverflow.

24073 - The command line for was not working correctly.

24186 - On UNIX, when creating JRun servers with the same string at the end of name (for example, default, 2default) , it failed in start of JRun.

24448 - Because of the DTD referenced in the web.xml file of the invoice application, if you connected to the Internet, the default server crashed after it was started.

24719 - A JavaScript error was displayed when trying to test a PointBase JDBC data source through the JMC.
The datasource works properly it's just that you can't use the JMC to verify it.

24767 - The Windows custom installation for EJB only (no web/servlets, demos, or documentation) failed to install a necessary file, JRun_rootdir/lib/ejb-jar_1_1.dtd. It does install unnecessary files, JRun_rootdir/samples/taglib/*.

24798 - There were problems with more than one method-permission with * in the method-name in an ejb-jar.xml file.

Known Issues

Known issues in the JRun Version 3.1 include the following:

17414 -When setting up the JMC to be accessed through Apache so the JMC password can be protected by SSL, you can't change the JMC mapping to /jmc because of the redirect to /security/login.jsp.

18053 - There is no way to set a session timeout value in the JMC so that the session never expires. If you set the session timeout to -1 for the JMC, you can no longer log into the JMC because of a NullPointerException on the index page. This means you must change the timeout value in the the jmc-app's web.xml file.

18213 - Request parameters do not persist through servlet chaining events when added to a URL or set as a servlet init parameter.

18455 - Name conflicts between Web applications and JRun services cause a JRun server to abort on start up.

18448 - JRun service names (for example, web, session, scheduler, jsp, jms, and mail) conflict with canonical servlet names in a Web application if they are the same.

18834 - When connecting multiple JRun servers to one Web server on the same machine, JSPs are not compiled and executed.

18893 - The Blackdown 1.1.8 JDK running on Linux has been known to cause problems. To avoid problems, try Linux with the Sun 1.2.x JDK or IBM 1.1.8 JDK.

19238 - When calling a servlet from the CFSERVLET tag, a session is created and the session ID is printed back to the browser. A subsequent hit to the same servlet from the same browser without closing the browser prints back a new session ID.

19239 - "Redeploy All Jars" in the JMC only works the first time it is used in a session. If you try to redeploy all JARs again, the JMC reports that all JARs have been deployed sucessfully, but nothing actually happens; this is only fixed by starting a new session (open a new browser window).

19740 - Init parameters with an ampersand (&) cause errors on the Servlet Definitions panel.

20032 - Servlet definitions that map a servlet name to a JSP do not work unless the actual *.jsp page is available to the application. Developers who want to ship only the jsp *.class files with their application cannot do so if they are using any servlet definitions or servlet URL mappings that depend on servlet definitions.

20628 - The External Web Server Address fails to work for anything other than "*". If you have a comma-delimited list of IP addresses, you cannot connect from any IP address.

21450 - The EarDeploy tool prints a nice error message when you try to deploy a Web application that is already deployed. However, when you try to deploy an EJB JAR file that is already deployed, it is appended to the ejipt.ejbJars property in

21898 - Using the Java PetStore application's search capability exposes a bug in the Merant driver (Merant bug number 1014303), resulting in the following error message:

[MERANT][SQLServer JDBC Driver][SQLServer]An ORDER BY clause is invalid in views, 
derived tables, and subqueries unless TOP is also specified.

One workaround is to place the offending SQL statement in a stored procedure and substitute the new stored procedure name for the raw SQL containing the UNION in the executeQuery() statement.

22468 - Servlets do not load dynamically when run from jsp:include if they are in the the/Jrun/servlet directory.

22791 - The jsp:include tag does not resolve relative paths with the Web application context.

22841 - You can't start the JRun server in debug mode when using dontdiejava.exe.

23036 - When installing on JRun on a Red Hat Linux 7.1 system or a Linux-Mandrake system with JDK1.2.2, you receive the following error message during "Installing EJB/JMS components ..." tar: 200 garbage bytes ignored at end of archive". As a workaround, download the GNU tar source from and compile it on Red Hat 7.1 or Linux-Mandrake, respectively. The JRun support team has created a KnowledgeBase article that describes a workaround for this problem (

23134 - While running the Connector Wizard for IIS, a "Could not retrieve 'Filter DLLs' value from the Windows directory." error dialog displays even though the process succeeded.

23228 - You can install JRun 3.1 on the same machine as JRun 3.0 but will experience the following problems:

  • The service names are the same so you can't install JRun 3.1 as a service.
  • The JRun 3.1 installer does not generate unique port numbers for ejb.classServerPort and ejb.HomePort.

The workaround is as follows:

  1. Do not install JRun 3.1 as a service.
  2. Keep JRun 3.0 running while installing JRun 3.1. This ensures that the installer generates unique port numbers (for all but ejb.classserver.port and ejb.homeport).
  3. Manually edit the files for the JRun 3.1 admin and default servers. Specify unique port numbers for ejb.classserver.port and ejb.homeport.

23337 - The EJB deploy tool should right trim property values to avoid trailing spaces in the deployment properties file from causing problems.

23341 - After logging in on the JMC home page, if you select File >New >Window before the session times out, a second home page window pops up with a Javascript error.

23458 - The new file picker displays an error message when you select a removable drive that contains no disk.

23481 - JRun does not check the character set before parsing Post parameters.

23487 - If a servlet implements the SingleThreadModel interface, JRun cannot reload the servlet at runtime; the server must be restarted to make any changes to take effect.

23569 - The JRun installer for HP-UX displays an error when evaluating the HP-UX 1.3 JDK but then continues without problems.

23646 - When calling setMaxInactiveInterval(int) on a session object with a value over Integer.MAX_VALUE / 1000, the call to getMaxInactiveInterval() returns an invalid value.

23686 - There is no way to access a JDBC resource from any namespace other than env/jdbc.

23717 - The log viewer is hard coded to read the default log file names.

24053 - . The JMC's JDBC data source test feature does not work for data sources that use the PointBase embedded database.

24058 - When installing JRun on Windows NT with the JDK 1.1.8, the error log shows "{}" for the Java Virtual Machine, unlike JDK 1.3, which shows "mixed mode from Sun Microsystems Inc."

24064 - Many of the JRun samples do not work with JDK 1.1.8.

24139 - When the JMC is automatically started after installation on slow Windows NT machines, the Web browser displays a "page not found" error because the JRun servers are not yet fully started.

24140 - response.sendRedirect does not work for URL types other than HTTP.

24200 - When using GNU tar 1.12, the Solaris install fails due to a tar error while unpacking JRun files. The install works fine with he standard Sun tar program.

24570 - The JMC may not start if users install where JRun 3.0 was previously installed, and they have not fully uninstalled JRun 3.0 or have some JRun 3.0 files left on their system.

24533 - JRun does not recognize default documents setting when the web.xml has no <welcome-file-list> tag with a <welcome-file> of index.jsp.

24880 - When creating a new server via the JMC everything works fine, but to actually get the server to work you must create a Web application in that server.

24929 - With JDK 1.1.8, you get an InvalidTagAttributeException if you try to run the JRun Tag Library sendmsg, msgparam, or getmsg tag samples. This is expected behavior because these samples use EJBs.

24649 - You cannot create a DB2 connection in JMC using IBM's application or net DB2Driver. You get the message "No valid driver is specified". The IBM DB2Driver works if you remove the jrun_driver.jar file.

24975 -The IBM JDK 1.3 for Windows ships with ibm4j.jar and xalan.jar, which are an XML parser and XSL processor, in the bootpath (ext directory). You must remove these two files or they will override JRun's XML parser and XSL processor. Additionally, there seem to be other differences between the IBM and Sun JDK 1.3 for Windows that affect EJBs.

25090 - You cannot run EJB samples 7b and 7c with the PointBase database. EJB CMP is not working with PointBase due to problems with how PointBase handles SQL types; to run sample 7c with another database, set up different database properties in the file and then set JDBC_DRIVERS to the JDBC driver JAR file.

25171 - The JRun Studio jspc.bat batch file currently does not work with JRun 3.1. Refer to the JRun support Knowledgebase for current status and bug fix information.

25296 - When JRun servers are installed as NT services on Windows NT or 2000, Sun JDK/JRE 1.3 and IBM JDK 1.3 users may find that JRun servers stop when the user is logged off. This bug is fixed in the JDK 1.3.1 beta release. Please see to the JDK 1.3.1 release notes.

Workaround for JDK 1.3:

  1. Open the JRun_rootdir/bin/ file in a text editor.
  2. Under Java VM Settings, set the java.exe property to JRun_rootdir/bin/dontdiejava.exe as follows. You must use forward slashes or double back slashes.
    # path to java virtual machine. Launchers will use system PATH if necessary
    # java.exe=C:\\Sun\\jsdk130\\jre\\bin\\javaw.exe
  3. Add an extra entry for java.jnipath property for directory containing the jvm.dll file:
    # shared library path for JNI libraries

    You cannot set java.jnipath indirectly by setting user.jnipath. You must use java.jnipath directly. Because dontdiejava.exe is a wrapper file, to do a stack trace for the JVM, you must switch back to java.exe and use Ctrl+Break.

25306 - A user created a stored procedure in MS-SQL and registered it the JMC using the JRun drive. CallableStatement cannot get the values of the registered output parameters for the stored procedure. Whenever CallableStatement tries to get the value of one of the registered parameters, it returns the message "java.sql.SQLException: [JRun][SQLServer JDBC Driver] The requested data is not available"

25378 - On an Itanium Beta system, JRun could not be uninstalled using Control Panel > Add/Remove programs. Start > Programs > JRun 3.1 > Uninstall JRun worked correctly.

25480 - When running EJB sample 2a on some Solaris machines, the server will throw a SocketException on shutdown. However, the sample runs with no problem.

25510/25594 - When setting the user.classpath of the file to include extra JAR files, a user received a NoClassDefFoundError when a jsp had to be compiled. This problem may have occurred because the {default} path was not expanded correctly in the file or because there were too many jars in the classpath (the java.class.path system property length limit was exceeded). If you hand-edit the user.classpath in the file, you must use the same explicit expansion of the {default} path that the JMC does. Otherwise, you will have problems with various classes not being found for the JSP engine, the sample datasources, and so forth.

On Red Hat Linux 7.1 with the Sun or IBM JDK 1.3, you must export the following variable from your.bash_profile before running JRun 3.1 or any other Java application:


Otherwise, the JVM will hang and JRun will not start. Red Hat is working with JDK vendors to fix this problem. For more information, see the Red Hat 7.1 README.

Some users have had problems accessing the EJB sample beans from remote clients. To access a bean remotely, before deploying the bean you must set the value in the file to the actual IP address of the machine. By default, the property is set to localhost.


JRun Version 3.1 Documentation

JRun Version 3.1 documentation includes the following:

  • Release Notes
  • Features and Migration Guide
  • PDF and HTML versions of the core documentation set

The dochome.htm page allows you to choose HTML or PDF format. The HTML documentation includes links to pages running on, which allows you to add comments to specific documentation pages.

The entire JRun 3.1 documentation set is included in electronic format in the JRun 3.1 installation. The JRun 3.1 box contains hard copies of the JRun 3.1 Features and Migration Guide and all the JRun 3.0 manuals except the Samples Guide.