J2EE Doc Bundle Home

Java

JavaTM 2 SDK, Enterprise Edition 1.3_01 Release Notes

 


Revised: 9/24/01

Contents

Patch Release 1.3_01

This patch release updates the FCS release of the J2EE 1.3 SDK to correct three problems that affected the portability of applications developed with the SDK:

With these corrections the J2EE SDK

Beginning with the J2EE SDK

First time users of the JavaTM 2 SDK, Enterprise Edition (J2EETM SDK) should follow these steps:

1. Read the Installation Instructions to find out how to set the J2EE_HOME and JAVA_HOME environment variables. The Installation Instructions are on our web site and may be reached by a link on the J2EE SDK download page.

2. Install the software that the JavaTM 2 SDK, Enterprise Edition relies on. See the Required Software section of this document.

3. Go to the J2EE Tutorial to learn how to use the J2EE SDK. The J2EE Tutorial is found at:

http://java.sun.com/j2ee/tutorial/1_3-fcs/index.html.

What's New in J2EE SDK 1.3

The 1.3 release of the J2EE SDK implements the following new features:

Supported Platforms

Supported Databases and JDBCTM Drivers

This release supports database drivers that conform to versions 1.0 and 2.0 of the JDBC API. We have performed tests with the following database servers:

For more information on JDBC technology, see the JDBC Data Access API web page. For a list of links to driver vendors, see the JDBC Technology Drivers page. After you've installed your driver, be sure to follow the instructions in the JDBC Drivers section of the Configuration Guide. If you are using the Cloudscape DBMS included in this release, you do not have to configure its driver.

What This Release Includes

This release of the JavaTM 2 SDK, Enterprise Edition includes the following software.

J2EE Server

The J2EE server supports the following J2EE APIs and technologies:

Tools

Additional information about these tools can by found by consulting the J2EE SDK Tools document included with this bundle.

Cloudscape DBMS

This release includes Cloudscape (v. 4.0), a relational DBMS written in the JavaTM programming language. Although the documented code examples were tested with a Cloudscape database, you may use any database that meets the requirements described in the section, Supported Databases and JDBCTM Drivers.

Required Software

The JavaTM 2 SDK, Enterprise Edition requires you to install the Java 2 SDK, Standard Edition. You need the JavaTM 2 SDK, Standard Edition to run the J2EE server and to build and run J2EE applications. If your J2EE client resides on a different machine than the J2EE server, then you must install the Java TM 2 SDK, Standard Edition on both the server and client machines. (This rule applies only to Java application clients, not to Web browser clients.)

The JavaTM 2 SDK, Enterprise Edition (v 1.3) requires the versions of the JavaTM 2 SDK, Standard Edition listed in the following table:

TABLE 1 Required Versions of the JavaTM 2 SDK, Standard Edition (J2SE)

Operating System

J2SE Version

SolarisTM 7, 8 1.3.1_01
Windows NT 4.0,
Windows 2000 Professional
1.3.1_01
Linux Redhat, v. 6.2 1.3.1_01

Note: Versions of the JavaTM 2 SDK, Standard Edition not listed in the preceding table have not been tested and are not supported. For example, J2SE v. 1.2 will not work with this release of the JavaTM 2 SDK, Enterprise Edition.

Current Limitations

The purpose of the J2EETM SDK is to introduce you to JavaTM 2 Enterprise Edition technology and to provide you with an opportunity to give us feedback on the work we've done so far. Release 1.3 has several limitations.

Multi-byte Character String Support

The current release does not support the use of multi-byte strings in EJB class names and JNDI names.

Database Calls During Result Set Iteration

With some JDBC drivers you cannot access the database while iterating through a result set. In the following code example, the stmt.executeUpdate call will fail:

String query = "SELECT DEPTNO FROM DEPT . . .";
String update = "UPDATE EMPLOYEE . . .";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
   String s = rs.getString("DEPTNO");
   // The following statement will FAIL:
   stmt.executeUpdate(update);
   . . .
}
You may be able to get around this limitation by trying the following approaches:

1. Use a stored procedure that contains the same SQL calls.

2. Substitute an iteration with a single SQL statement that contains a subquery. Here's an example:

String update = "UPDATE EMPLOYEE
    SET DEPTNO =
      (SELECT DEPTNO FROM DEPT
       WHERE LOC = `ATLANTA')
   WHERE TITLE = `ENGINEER'";
3. Call another method that issues the second SQL statement. The method must use the RequiresNew transaction attribute. If you try this approach, you should be aware that the second SQL statement is executed in another transaction. Therefore, if the second transaction fails, you need to mark the first transaction for rollback.

Scalability and Memory Requirements

The minimum memory requirement is 128 MB of memory. We recommend 256 MB for larger applications.

In J2SE 1.3.1, an OutOfMemoryError can result when a very large number of Java classes are loaded by the JVM, even when there are free spaces on the Java heap. Workaround: Edit bin/setenv.sh or bin/setenv.bat to add the following option to the JAVACMD variable:

-XX:MaxPermSize=256M
See also

http://developer.java.sun.com/developer/bugParade/bugs/4390238

Common Development Environment

Each developer should work with his or her own J2EE SDK installation. Multiple developers should not share the same J2EE server.

RMI-IIOP and JAXP Standard Extensions

The J2EE SDK will not work with a J2SE installation which has the RMI-IIOP and JAXP standard extensions. The j2ee.jar file of the J2EE SDK already has the RMI-IIOP and JAXP classes. Workaround: Use a fresh J2SE installation without the standard extensions.

Known Bugs

TABLE 2 Known Bugs for the J2EE SDK 1.3 Release

Bug ID

Description

4365998 The Update Files function in the DeployTool no longer works after the display name for an Application is changed. Workaround: Update each file individually and re-add the new files to the contents of the EJB/Web/App bundle.
4412002 A deployed J2EE client on Windows or Solaris cannot connect to J2EE on a default installation of Redhat Linux. The Redhat Linux method InetAddress.get LocalHost() returns the loopback address instead of the actual host address. The fix is to assure that the method returns the actual host by updating the /etc/hosts file, or the name service configuration file, /etc/nsswitch.conf,using a query to dns or nis.
4461245 The SQL generator in the DeployTool generates database table names for storing the persistent state of CMP EntityBeans based on the bean class name. If there are two or more beans with the same bean class name (in the same EAR or in multiple deployed EARs), the table names will conflict. Workarounds: use different datasources for storing beans in different EARs. Or, change the table names in the generated SQL statements in the Deployment Settings dialog for EntityBeans.
4485722 The ServletRequest.setCharacterEncoding() method does not work in JSP pages. Workaround: Add a Filter in front of the JSP page and make this API call inside the Filter.
4491857 The PageContext.include() method does not perform a flush. To be portable,a tag library implementation should not rely on flush being performed by the web container. Workaround: Perform an explicit flush (e.g. PageContext.getOut().flush()) before calling PageContext.include().

Differences Between Tomcat and the J2EETM SDK

Tomcat is an implementation of the JavaServerTM Pages and JavaTM Servlet specifications. This version of the J2EE SDK includes Tomcat version 4.0.

Note: The Tomcat implementation in the J2EE SDK might be slightly different from the version of Tomcat 4.0 distributed separately because of different release schedules. For more information about Tomcat, please see http://jakarta.apache.org/.

Linux Notes

Port Conflicts

The network services of Redhat 6.2 (with Gnome) use port 1050. By default, the J2EE server also uses this port. If this port conflict occurs, you will see the following error message when you start the J2EE server in verbose mode (e.g., j2ee -verbose):

J2EE server Listen Port: = 1050
java.lang.RuntimeException: 
Could not initialize j2ee server. 
Possible cause could be another instance of the server already 
running.
. . .
To fix this problem, change the default port numbers in the $J2EE_HOME/config/orb.properties file. For example, you can add a zero to each port number in the orb.properties file:

port=10590
host=localhost

Interoperability Between EJBTM Containers

Starting with version 1.3, the J2EE SDK implements all requirements for EJB container interoperability as defined by the Enterprise JavaBeans 2.0 Specification. With this interoperability feature, enterprise beans in the J2EE SDK can communicate with clients that run on application servers provided by other vendors, as long the application servers implement the specified interoperability requirements. The clients can include servlets, JSP pages, J2EE application clients, and enterprise beans.

To communicate with an enterprise bean running on the J2EE SDK server, the client running on an application server provided by another vendor must have the j2ee-ri-svc.jar file in its class path.

A client is running on the J2EE SDK server doe not need the j2ee-ri-svc.jar file to communicate with an enterprise bean on an application server provided by another vendor.

The j2ee-ri-svc.jar file is located in the lib directory of the J2EE SDK installation. It contains portable system value classes such as implementations of javax.ejb.Handle and javax. ejb.EJBMetaData. These implementations are specific to the J2EE SDK.

For more information on EJB container interoperability, please refer to section 19.2 of the Enterprise JavaBeans 2.0 Specification. A link to the Specification may be found on the J2EE SDK download page.

Container-Managed Persistence 2.0

The architecture for container managed persistence (CMP) has been enhanced in the J2EE SDK 1.3 release. Please see the EJB 2.0 Specification for details.

Note that the persistence manager in the J2EE SDK only supports forward mapping of a CMP 2.0 abstract schema to a relational database. Using the J2EE SDK's tools, it is not possible to reverse map from existing database tables to a CMP 2.0 abstract schema.



Copyright © 2001 Sun Microsystems, Inc. All rights reserved.