J2EE Doc Bundle Home
|
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:
- In the FCS release the J2EE SDK tools generated incorrect values for the "multiplicity" element for relationships in the XML deployment descriptor for Container Managed Persistence (CMP) 2.0. The correct values are generated in this 1.3.1_01 patch release of the J2EE SDK, and the J2EE SDK now correctly deploys CMP 2.0 entity beans whose descriptors contain the correct values. BugID 4503858.
- CMP 1.1 entity beans, supported in EJB 2.0 for compatibility reasons, do not have the query feature of CMP 2.0 entity beans. In the FCS release the J2EE SDK tools incorrectly generated a "query" element in the XML deployment descriptor for CMP 1.1 entity beans. The J2EE SDK now generates correct XML deployment descriptors for CMP 1.1 entity beans. BugID 4504244.
- In the FCS release the J2EE SDK tools incorrectly generated a "container transaction" element in the XML deployment descriptor for the "getHandle" method for EJB 2.0 EntityBeans. The EJB 2.0 specification does not suppport a transaction attribute for the "get handle" method. The J2EE SDK now generates correct XML deployment descriptors for the "getHandle" method for EJB 2.0 EntityBeans. BugID 4505253.
With these corrections the J2EE SDK
- can now be used to build applications employing EJB 2.0 CMP entity beans that are portable to other J2EE application servers , and
- will correctly run such applications developed on other J2EE application servers.
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:
- JavaTM Messaging Service (JMS)
- J2EETM Connector Architecture
- JavaTM API for XML Parsing (JAXP)
- JavaTM Servlet new features:
- filters, a lightweight framework for transforming requests and responses
- mechanisms for monitoring application lifecycle events
- better support for internationalization
- JavaServer PagesTM new features:
- improved runtime support for tag libraries
- translation-time JSPTM page validation
- Enterprise JavaBeansTM new features:
Supported Platforms
- SolarisTM 7, 8
- Windows NT, v. 4.0
- Windows 2000 Professional
- Linux Redhat, v. 6.2
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:
- Oracle8 Server, v. 8.1.6
- Microsoft SQL Server, v. 7.0
- Cloudscape, v. 4.0
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:
- HTTP and HTTPS
- COS naming
- Enterprise JavaBeansTM (EJB) 2.0
- JavaTM Servlets 2.3
- JavaServer PagesTM (JSP) 1.2
- JavaTM Messaging Service (JMS) 1.0.2
- J2EETM Connector 1.0
- JDBCTM Standard Extension 2.0
- JavaTM Transaction API (JTA) 1.0
- JavaMailTM 1.2
- JavaTM API for XML Parsing (JAXP) 1.1
Tools
- Administration Tool
The j2eeadmin utility adds JDBC drivers, JMS destinations, and connection factories for various resources.
- Application Deployment Tool
The deploytool utility packages J2EE components and deploys J2EE applications.
- Key Tool
The keytool utility creates public and private keys and generates X509 self-signed certificates. The J2EE SDK version is a wrapper for the J2SE SDK version, but adds a Java Cryptographic Extension provider that has implementations of RSA algorithms (licensed from RSA Data Security).
- Realm Tool
The realmtool utility manages users for the J2EE server.
- Verifier
The verifier utility validates J2EE component files.
- Packager
The packager utility packages J2EE components.
- Cleanup Script
The cleanup utility deletes all deployed J2EE applications.
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.