JBuilder 2005

Release Notes

This document contains a subset of known problems, workarounds and tips for JBuilder 2005.

Table of Contents

General
Installation and Registration
Optimizeit Tools
Web Services
Enterprise JavaBeans (EJB)
Web Development
Team Development
Mobile Development
XML
Debugger
Designer
OpenTools
New Features and Fixes in JDataStore 7.01
Unix
Macintosh
Samples
Performance
International
Documentation
Copyrights, conditions and disclaimers

General

For the latest JBuilder FAQs and Technical Information Notes (TIs), please visit:

For updates and service packs for the Java Development Kit (JDK), see: http://java.sun.com/j2se/.

Tips

Using JBuilder 2005 with other versions of JBuilder

Some of the changes in JBuilder 2005 make it extremely inconvenient to share the default configuration directory from previous versions of JBuilder (.jbuildern, where n is the version number of JBuilder) with an installation of JBuilder 2005. As a service to our customers, we put the settings for JBuilder 2005 in a new directory, .jbuilder2005.

Note: JBuilder 2005 shares the following directories with previous versions of JBuilder:

You can change the location where JBuilder looks for your .jbuildern directory by adding the following entry to the jbuilder.config file:

vmparam -Djbuilder.home=path to the parent directory for .jbuilder-dir

where .jbuilder-dir is the name of your alternate home directory.

Note: Do not place quotation marks around the values you add to your jbuilder.config file, even if they contain spaces. Doing so will generate a parsing error.

Known Problems

[ top ]

Installation and Registration

Tips

If you encounter problems installing your copy of JBuilder, please refer to "Troubleshooting" for additional information.

Registration

If you encounter problems registering your copy of JBuilder, please refer to the "Troubleshooting" section of Registering JBuilder.

Silent Installation

To install JBuilder without using the GUI installer:

  1. Create a file that specifies an installation directory and request a silent installation.
  2. The file should contain these lines:

    This file uses $/$ as a platform-independent separator.

  3. Launch the installation program with an -f argument followed by the name of the file you created:

Linux

Uninstalling JBuilder 2005

To uninstall JBuilder 2005, run the following from the Uninstallxxxxxxx directory (where xxxxxxx is the name of the JBuilder edition you installed) under the directory where you installed JBuilder 2005:

Known problems

[ top ]

Optimizeit Tools

Known Problems

Optimizeit includes a Troubleshooting Guide that answers frequently asked questions about Optimizeit installation and configuration. These are some additional issues not covered in the Troubleshooting Guide. They are sorted by platform and JDK.

JDK Issues:

Windows Issues:

Solaris and Linux Issues:

Other Issues

[ top ]

Web Services

Known Problems

[ top ]

Enterprise JavaBeans (EJB)

Tips

Known problems

[ top ]

Web Development

Tips

When running a JSP or servlet using JBuilder's internal web browser, the initial time to compile the JSP may cause the server to respond too slowly for the internal browser's time-out value. The server will close the connection and the page will render blank in the Web View. One or two repeated attempts to load the page by hitting Refresh or by placing keyboard focus on the URL field and hitting Enter should load the page. Alternatively, the JSP or servlet can be viewed in an external browser. Typically, an external browser has a generous time-out value that can be configured.

Known problems

[ top ]

Team Development

Tips

To take full advantage of CVS capabilities in JBuilder, it is recommended that you use the version of CVS that is installed with JBuilder or later.

For projects that are under version control, it is recommended you do not use "New Folder" feature from the Project Pane. It is better to organize your project using JBuilder's automatic source package discovery, or by choosing Add Files/Packages.

Known problems

[ top ]

Mobile development

Mobile development is a feature of JBuilder Developer, JBuilder Enterprise, and JBuilder Mobile Edition. It provides support for UEI compatible J2ME JDKs, plus the specific vendors listed below. For information on downloading and installing JDKs for mobile development in JBuilder, see "Mobile Development: Installation and setup."

[ top ]

XML

Tips

If transformation of your XML document fails, check to see if you are using the correct version of the stylesheet specification, http://www.w3.org/1999/XSL/Transform, and not the working draft.

Castor now requires 2001 schema support, <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">. If an older version is used, an error or exception might occur. The Castor sample has been updated: <JB_HOME>/samples/tutorials/XML/databinding/fromSchema/Castor.jpx. The same is true for XML schema validation. You can find the latest Xerces schema samples with 2001 schema support in <JB_HOME>/extras/xerces/data/.

Known problems

[ top ]

Debugger

Remote debugging

When attaching to a process running on a remote computer, the default address has changed from 5000 to 3999.

To view this change,

  1. Choose Project|Project Properties.
  2. Click the Run tab.
  3. Choose a runtime configuration click Edit.
  4. Click the Debug tab. On the Debug page, choose Enable Remote Debugging, then choose Attach. Note that the Address option defaults to 3999.

    The port number/address that you set in this field should match the address parameter that you use when you run your program from the command line on the remote computer.

If you are running Windows XP, do not use 5000 as the port number/address through which the debugger communicates with a remote computer. Windows XP reserves this port for the Universal Plug & Play.

Tips

Known problems

[ top ]

Designer

The Designer supports code generated by VisualAge (versions 3 and 4). You can view the source files generated by VisualAge, and use the Designer with these source files without having to modify them in any way. Use the Designer to add additional components, copy and paste, move components between containers, move to first, move to last, and change their properties and constraints.

Tips

Red beans due to this extending an abstract class

When JBuilder needs to instantiate an object to be the this object, it can't instantiate the object you're designing. To circumvent this problem, JBuilder instantiates the superclass of the this object. If the superclass is abstract, it can't be instantiated. It's necessary to provide a concrete proxy class.

You can add your own proxy objects in the user.properties file. The syntax is

designer;proxy.<fully qualified name of abstract class>=<fully qualified name of concrete class to be used as proxy>

For example,

designer;proxy.java.awt.Component=com.borland.jbuilder.designer.dt.ComponentProxy

The proxy class must

Warning: Generally, it's very strongly recommended that you avoid altering the user.properties file. If you must alter it, save the original version first, as a backup.

For more information on red beans and their causes, see "Handling red beans" in the "Advanced topics" chapter of Designing Applications with JBuilder.

Known problems

[ top ]

OpenTools

If certain calls to the Open Tools API Browser class are made from within the jbInit() method of a class being designed by the UI Designer, JBuilder will exhibit strange repainting and response issues. The calls that definitely exhibit this behavior include:

The solution is to move these calls outside of the class's jbInit() method into another method, such as the constructor.

[ top ]

New Features and Fixes in JDataStore 7.01

These Release Notes provide a brief description of each new feature in JDataStore 7. The JDataStore Developer's Guide includes a "What's New" chapter that provides links to the documentation for each new feature within the Developer's Guide.

To see bugs fixed in JDataStore 7.01 click here

The new features in JDataStore 7 include:

Product notes

New and updated documentation

Getting started with JDataStore 7

New features

The JDataStore High Availability Server

JDataStore 7 provides tools for creating automatic or manual incremental backups and for creating automatic failover to a mirror of the original database in case of failure. In addition, there are tools for viewing and managing connections on a remote server, for managing datasources and connections graphically or with the new ISQL feature, for viewing database status logs and transactions logs, for viewing logs, and for verifying databases.

The "High Availability Server" topic in the "Architecture" chapter of the JDataStore Developer's Guide discusses the architecture of JDataStore's new failsafe server and its associated mirroring functionality. This section is well worth reading, because it will help you make the most of this new offerings.

New keywords

The asterisk following a keyword indicates that the keyword is reserved. Reserved keywords can be used as SQL identifiers only if they are enclosed in double quotation marks. When quoted in this fashion, they are case sensitive. The words that have no asterisk are nonreserved keywords. They can be used with or without double quotes and are case insensitive when note in quotes.

For a complete list of keywords, see Keywords in the "SQL Reference" chapter of the JDataStore Developer's Guide.

ADMIN*
ADMINISTRATOR*
AUTHORIZATION*
BIT_LENGTH*
COALESCE*
CURRENT_ROLE*
CURRENT_USER*
EXECUTE*
GRANT*
ISOLATION*

LEVEL*
NONE*
NULLIF*
OCTET_LENGTH*
ONLY*
OPTION*
PRIVILEGES*
PUBLIC*
READ
RENAME*

RESOLVABLE*
REVOKE*
ROLE
SCHEMA*
STARTUP*
TO*
TRANSACTION*
VIEW*
WITH*
WRITE

New SQL functions

BIT_LENGTH

The BIT_LENGTH function gives the length in bits of a STRING, INPUTSTREAM, or OBJECT value. For more information, see BIT_LENGTH in the "SQL Reference" chapter of the JDataStore Developer's Guide.

CASE

The CASE function returns a conditional value. For more information, see CASE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

COALESCE

The COALESCE function returns the first non-NULL value from the expression list. For more information, see COALESCE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

CURRENT_ROLE

The CURRENT_ROLE function returns the current role, or NULL if no role has been set using the SET ROLE statement. For more information, see CURRENT_ROLE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

CURRENT_USER

The CURRENT_USER function returns the name of the current user. For more information, see CURRENT_USER in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DB_ADMIN: administration functions

DB_ADMIN is a new JDataStore Java class whose methods are implemented in SQL as built-in stored procedures. Use DB_ADMIN for various database administration tasks such as automatic failover, incremental backup, creating and managing datasources, viewing and managing connections, verifying tables, and displaying database privileges and properties, locks, status logs, procedure privileges, and roles granted.

DB_ADMIN in the "SQL Reference" chapter of the JDataStore Developer's Guide provides a brief description of each method, implemented as a SQL function. The description of each method includes a link to the exact implementation and com.borland.datastore.driver.DB_ADMIN.html in the API reference. (The preceding link works when this document is in the JDataStore_home\doc directory.)

You can call these methods from SQL using the CALL statement. They can be called without creating a JAVA_METHOD alias because JDataStore SQL recognizes the methods in DB_ADMIN as built-in java methods.

DB_ADMIN provides the following methods:

ALTER_DATABASE
ALTER_MIRROR
ALTER_MIRROR_SCHEDULE
CLOSE_CONNECTION
CREATE_MIRROR
CREATE_MIRROR_SCHEDULE
DROP_MIRROR
DROP_MIRROR_SCHEDULE
GET_CONNECTIONS
GET_DATABASE_PRIVILEGES
GET_DATABASE_PROPS
GET_DATABASE_STATUS_LOG_FILTER
GET_LOCKS

GET_MIRRORS
GET_NEWEST_STATUS_LOG_ID
GET_OLDEST_STATUS_LOG_ID
GET_PROCEDURE_PRIVILEGES
GET_ROLE_GRANTS
GET_STATUS_LOG_FILTER
GET_STATUS_LOG
GET_THIS_MIRROR
SET_DATABASE_STATUS_LOG_FILTER
SET_PRIMARY_MIRROR
SET_STATUS_LOG_FILTER
SYNCH_MIRROR
VERIFY

DB_UTIL: numeric, string, and date/time functions

DB_UTIL is a new JDataStore Java class whose methods are implemented in SQL as built-in stored procedures. They are a collection of SQL utility functions that perform numeric, string and date/time operations on data stored in database tables.

DB_UTIL in the "SQL Reference" chapter of the JDataStore Developer's Guide provides a brief description of each method. The description of each method includes a link to the exact implementation in com.borland.datastore.driver.DB_ADMIN.html in the API reference. (The preceding link works when this document is in the JDataStore_home\doc directory.)

You can call these methods from SQL using the CALL statement. They can be called without creating a JAVA_METHOD alias because JDataStore SQL recognizes the methods in DB_ADMIN as built-in java methods.

DB_UTIL provides the following methods


ACOS
ASIN
ATAN
ATAN2
CEILING
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MOD
PI


POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
TAN
TRUNCATE
ASCII
TO_CHAR
DIFFERENCE
INSERT_STRING
LEFT_STRING


REPEAT
REPLACE
RIGHT
SOUNDEX
SPACE
DAYNAME
DAYOFWEEK
DAYOFYEAR
MONTHNAME
QUARTER
TIMESTAMPADD
TIMESTAMPDIFF
WEEK

NULLIF

The NULLIF function compares two expressions. It returns NULL if the expressions are equal. Otherwise, it returns the first expression. It is logically equivalent to the following CASE expression:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

For more information, see NULLIF in the "SQL Reference" chapter of the JDataStore Developer's Guide.

OCTET_LENGTH

The OCTET_LENGTH function gives the length in bytes of a STRING, INPUTSTREAM, or OBJECT value. For more information, see OCTET_LENGTH in the "SQL Reference" chapter of the JDataStore Developer's Guide.

USER

The USER function returns the name of the current user; this function is the same as CURRENT_USER. For more information, see CURRENT_USER in the "SQL Reference" chapter of the JDataStore Developer's Guide.

New and updated SQL statements

CREATE SCHEMA

The CREATE SCHEMA statement creates a name space for tables, views, and methods. You can use CREATE SCHEMA to create multiple objects in one SQL statement. For a discussion of how schemas work in JDataStore, see CREATE SCHEMA and DROP SCHEMA in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DROP SCHEMA

The DROP SCHEMA statement deletes the specified schema. If the command is used without options, it is the same as specifying the RESTRICT option: the schema to be dropped must be empty. The command fails if the schema contains any objects.

Note: The DROP SCHEMA command used with the CASCADE option is extremely powerful and should be used with caution. When this command is issued, it drops the schema and all of its objects and dependencies without any chance to change your mind. There is no undo.

CREATE VIEW

The CREATE VIEW statement creates a derived table by selecting specified columns from existing tables. Views provide a way of accessing a consistent subcollection of the data stored in one or more tables. When the data in the underlying tables changes, the view reflects this change.

For more information, see CREATE VIEW in the "SQL Reference" chapter of the JDataStore Developer's Guide.

ALTER VIEW

The ALTER VIEW statement modifies a view without losing dependent views and existing GRANTs. This statement can be used to change the name of a view, the columns that comprise the view, and whether the view has the WITH CHECK OPTION constraint. For more information, see ALTER VIEW in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DROP VIEW

The DROP VIEW statement drops the named view. By default, it fails if there are dependencies on the view. The CASCADE option drops the view and any dependent views. For more information, see DROP VIEW in the "SQL Reference" chapter of the JDataStore Developer's Guide.

CREATE ROLE

The CREATE ROLE statement creates a named role. To complete this functionality, you must GRANT privileges to the role, and GRANT the role to one or more users. To make use of the privileges acquired in this fashion, the user issues a SET ROLE statement.

For more information, see CREATE ROLE and the GRANT statement in the "SQL Reference" chapter of the JDataStore Developer's Guide.

SET ROLE

The SET ROLE statement makes the named role active. The current user acquires all privileges assigned to that role. For more information, see SET ROLE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DROP ROLE

The DROP ROLE statement drops the specified role. For more information, see DROP ROLE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

CREATE TABLE

There are three new options for the CREATE TABLE statement:

For more information, see CREATE TABLE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

ALTER TABLE

There are several new options for the ALTER TABLE statement:

For more information, see ALTER TABLE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DROP TABLE

The DROP TABLE statement deletes a table and its indexes from a JDataStore database. DROP TABLE has two new options: RESTRICT and CASCADE.

CREATE JAVA_CLASS

The CREATE JAVA_CLASS statement makes all public static methods of a Java class available to JDataStore SQL as stored procedures or UDFs. For more information, see CREATE JAVA_CLASS in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DROP JAVA_CLASS

The DROP JAVA_CLASS statement drops a stored class, making it unavailable for use in JDataStore SQL. For more information, see DROP JAVA_CLASS in the "SQL Reference" chapter of the JDataStore Developer's Guide.

GRANT

The GRANT statement performs the following actions:

For more information, see GRANT in the "SQL Reference" chapter of the JDataStore Developer's Guide.

REVOKE

The REVOKE statement performs a number of actions:

For more information, see REVOKE in the "SQL Reference" chapter of the JDataStore Developer's Guide.

CREATE USER

The CREATE USER statement adds the named user and associated password to the database. The password is case sensitive, the user name is not. For more information, see CREATE USER in the "SQL Reference" chapter of the JDataStore Developer's Guide.

ALTER USER

The ALTER USER statement sets a new password for an existing user. For more information, see ALTER USER in the "SQL Reference" chapter of the JDataStore Developer's Guide.

DROP USER

The DROP USER statement drops a user and all objects that the user owns. It has RESTRICT and CASCADE options. For more information, see DROP USER in the "SQL Reference" chapter of the JDataStore Developer's Guide.

SET TRANSACTION

The SET TRANSACTION statement sets the properties for the following transaction. You can use it to specify the isolation level and whether the transaction is read-write or read-only. For more information, see SET TRANSACTION in the "SQL Reference" chapter of the JDataStore Developer's Guide. See "Transaction management" in the "System Architecture" chapter for further discussion of JDataStore transaction management.

New data type: TINYINT

JDataStore SQL now provides a one-byte integer data type, TINYINT (or BYTE). For more information, see "Datatypes" in the "SQL Reference" chapter of the JDataStore Developer's Guide.

JDBC escape functions

JDataStore now provides a greatly expanded list of JDBC escape functions. For a complete list, see "JDBC escape functions" the "SQL Reference" chapter of the JDataStore Developer's Guide.

ISQL

JDataStore's new ISQL can be run in the SQL tab of the Server Console. These commands can also be issued from any system command console.

For a discussion of JDataStore new ISQL and a list of commands, see ISQL in the "SQL Reference" chapter of the JDataStore Developer's Guide.

Product notes

Mirroring

JDataStore 7 introduces the concept of Mirroring. The three different types of mirrors are

The mirrors can also be kept in synch with the source database in different ways. The different synchronization types are

You use mirrors to incrementally back up the primary database. When auto-failover is in place, mirrors also provide a mechanism whereby a mirror takes over as the primary database when the original primary mirror goes down or is isolated by network failure. Finally, directory mirrors provide load balancing, so that the workload is spread out appropriately between the primary database and its mirrors It is recommended that a directory mirror be used for configurations that enable automatic failover. This way if the primary mirror has failed over to a new server, the directory will know how to find it.

A change to the "Copy JDataStore" menu item

JdsExplorer has a Copy JDataStore item on the Tools menu. Its function is different in JDataStore 7 then in earlier versions of the product. In previous versions of JDataStore, choosing Tools|Copy JDataStore brought up the Copy Streams dialog box, and made you select exactly which streams to copy. Now this menu item brings up a dialog in which you copy an entire database file.

There is a new item on the JDataStore Tools menu: Copy Into Existing JDataStore. This item permits you to copy into an existing, empty JDataStore, which allows you to downgrade or encrypt databases.

To copy individual tables between databases, use the Tools|Import chose in JDSExplorer.

New and updated documentation

New chapters

There are two new chapters in the JDataStore Developer's Guide.

Expanded SQL Reference

The JDataStore implementation of the SQL language has been greatly enriched, and the SQL Reference chapter in the JDataStore Developer's Guide has been expanded and reorganized.

JDBC escape syntax

The JDBC escape syntax was not previously documented. It is now in the "JDBC escape syntax" in the "SQL Reference" chapter of the JDataStore Developer's Guide.

Stored procedures and JDBC ResultSets

A Java stored procedure can produce a ResultSet on the client by returning either a ResultSet or a DataExpress DataSet from the Java implementation of the stored procedure. The DataSet is automatically converted to a ResultSet for the user of the stored procedure.

Documentation on the feature has been expanded in JDataStore 7. For more information, see "Stored procedures and JDBC ResultSets" in the "Stored Procedures and UDFs" chapter of the JDataStore Developer's Guide.

Getting started with JDataStore 7

Migrating older databases to JDataStore 7

The big issue in migrating older databases to JDataStore 7 is that JDataStore 7 has the concept of schemas, and older databases do not. In JDataStore 7, every table belongs to a schema: the schema name is part of the table name. In general, when a user creates an object such as a table or a view, that object belongs to the user's own schema. There are a number of issues regarding the use of schemas. It will be helpful to you to read CREATE SCHEMA in the "SQL Reference" chapter of the JDataStore Developer's Guide to understand how JDataStore 7 uses schemas before proceeding with migration.

For additional detail on migrating older JDataStore databases to JDataStore 7, see "Migrating older databases to JDataStore 7" in the "JDBC Quickstart" chapter of the JDataStore Developer's Guide.

Using JDataStore 7 with JBuilder and the Borland Enterprise Server

To make the latest version of JDataStore available to JBuilder and the Borland Enterprise Server (BES), you need to copy certain files form the JDataStore lib directory to the lib directory of the target product. The files are: beandt.jar, dbtools.jar, dx.jar, jds.jar, jdsremote.jar, and jdsserver.jar

For more information, see "Using JDataStore with JBuilder and the Borland Enterprise server" in the "JDBC Quickstart" chapter of the JDataStore Developer's Guide.

Field test note: For the field test, copying these files may cause some menu problems in JBuilder. These problems go away when you remove the copied files. This defect will be fixed for the final release.

Bugs Fixed in 7.01

There have been many significant improvements in High availability Mirrors as well as Read-Only Transactions

Modify output of date and time to include at least 2 digits for day, month, minute, second, hours

Remote JDBC driver improved server exception handling

A prepared query with a parameterized LIKE operator in the where clause e.g. "SELECT * FROM PERSON WHERE LASTNAME LIKE ?"was mistakenly executed with the parameter given first time the query was executed; thus subsequent executions would receive wrong results. This problem has been fixed.

A SQL query which uses an auto-increment field for a lookup or join may in certain circumstances yield the wrong result.

This problem has been fixed.

[ top ]

Unix

Tips

Printing on Linux and Solaris platforms

A workaround for users on Unix platforms who do not need to use AWT components in the designer and want to be able to select a printer that is different than lpr is to comment out the line in the jbuilder.config file that adds the LightWeight Toolkit to the boot path as shown:

# Put the Lightweight Toolkit on the boot path
#addbootpath ../lib/lawt.jar

Applets

In order to run an applet on Solaris or Linux from within JBuilder, you must add the Open Tools SDK library to your project. Failing to add this library can lead to an exception about a "NoClassDefFoundError:AppletTestbed." This problem currently affects some of the applet samples, including the Primes Swing sample.

Known problems

[ top ]

Macintosh

Known problems

[ top ]

Samples

The samples.html file should be viewed in JBuilder or from the link in the Welcome Project if you want to use the links to load the project files in JBuilder. However, if you configure your file associations so that JBuilder projects are associated with JBuilder, you can view samples.html in most web browsers, and the links to projects will work.

Known problems

[ top ]

Performance

These are some suggestions for improving local performance of JBuilder.

[ top ]

International

Installing to a Japanese NEC machine:

[75607] If you are installing JBuilder to a Japanese NEC computer and the install program causes an operating system error message saying that "Drive C: is not ready... the drive door may be open...", press the <Ignore> button in this dialog. Install will then complete normally. (The <Abort> button should also work.)

Japanese Fonts on Linux:

[75704][75705] If you experience problems displaying Japanese fonts on Linux, you may need to update the file, <jdk1.3.1>/jre/lib/font.properties.ja. JavaSoft's web site has instructions on how to do this in Japanese: Directions to modify the font.properties file (in Japanese).

Command Line Compiler:

Other Known Problems:

[ top ]

Documentation

If your version of JBuilder does not contain the documentation PDF files on one of the product CDs, you can download them from the JBuilder Product Documentation web site: http://info.borland.com/techpubs/jbuilder. Also, check the JBuilder Product Documentation web site for updates to the documentation.

For the latest JBuilder FAQ's and TI's, please visit:

[ top ]