# 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:

- FAQs: http://bdn.borland.com/all/0,1435,c|3|10,00.html
- TIs: http://bdn.borland.com/all/0,1435,c|3|9,00.html

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

### Tips

- When "Synchronize Output Dir" is turned on (Project Properties|Build|Java), all of the class files in the output path directory that do not have source files are deleted during compilation. This is the default setting. You should turn this off when you manually add classes to the output directory.
- Do not copy configuration files from your old `jbuildern/lib/ext` directory into your new `JBuilder2005/lib/ext` directory. This can cause problems with the current version of JBuilder. Instead, use the Import Settings wizard (Tools|Import Settings). The wizard automatically runs the first time you launch JBuilder 2005 if a previous installation is found. Or, reset these configurations by choosing Enterprise|Configure Servers or Enterprise|Enterprise Setup|Database Drivers.

### 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:

- `.dbpilot`

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

- [209134] The VFS cache does not always appear to be cleared when a project is made. If a project is in a project group, this means that dependent projects in the group will not have the correct information.
- [205674] SQLJ files will not build if the path to the JDK contains spaces, or if the name of the project file contains a space in it.
  Workaround: Install the JDK to a directory that does not contain spaces. Do not use spaces in the name of your project files.
- [186076] If a user has moved the main class to a different package (especially through refactoring), any existing run configurations utilizing the class are no longer valid. It is not obvious to the user that the configuration is not valid.
- [166857] Making a class that is dependent on another class results in a cannot resolve symbol error.
- [165694] JBuilder Foundation only: If the runtime configuration dialog is opened and users click OK, the project (`.jpx`) file is marked dirty and all other runtime configurations are wiped out.
  Workaround: Click Cancel instead of OK. (OK means save; Cancel does not save.)

[ top ]

## Installation and Registration

### Tips

- For explicit installation instructions, look at the following file for your platform:
  - `setup_windows.html`
  - `setup_linux.html`
  - `setup_solaris.html`
  - `setup_mac.html`

  It is very important to follow those directions.

- You should only run one option from the installation launcher at a time. For example, if you choose JBuilder on the Web, you need to close your browser (Macintosh users: need to make certain to close the application, not only the user interface) before you select another item from the launcher.

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.

- Licensing issues with Borland Enterprise Server in JBuilder 2005 Developer and Enterprise

  If you install both JBuilder 2005 Enterprise Edition and JBuilder 2005 Developer Edition (usually done for demonstration purposes) and also install Borland Enterprise Server in both cases, Borland Enterprise Server will not function due to conflicting licenses. To make Borland Enterprise Server work in this situation, do not install Borland Enterprise Server with either JBuilder Edition. Instead, download and install a trial version of Borland Enterprise Server 6.0RP1; this version can be used by both JBuilder editions.

- Adding a Borland Deployment Op-Center license to a Borland Enterprise Server installed with JBuilder 2005

  This configuration is not currently supported, as there is no user-based license available for Op-Center. Until this is available, download and install a trial version of Borland Enterprise Server 6.0RP1, then apply both the Borland Enterprise Server 6.0 Trial license and an Op-Center Trial (or Production) license.

- Upgrading Borland Enterprise Server installed with JBuilder 2005 to a Borland Enterprise Server Production license

  This requires that a configuration file be modified, and the Borland Enterprise Server management agent be restarted. A procedure for this upgrade will be available on the Borland Enterprise Server FAQ site at http://info.borland.com/devsupport/bes/faq/6.0/index.html.

#### 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:
   - Windows:

         USER_INSTALL_DIR=drive:$/$Borland$/$JBuilder2005
         INSTALLER_UI=silent

   - Linux or Solaris:

         USER_INSTALL_DIR=$/$opt$/$Borland$/$JBuilder2005
         INSTALLER_UI=silent

   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:
   - Windows: `ent_install -f <filename>` (example: `ent_install -f c:\temp\installer.properties`)
   - Linux or Solaris: `./ent_install.bin -f <filename>` (example: `./ent_install.bin -f ./temp/installer.properties`)

### Linux

- Possible Problem: System minimum configuration meets or exceeds specified requirements, but JBuilder runs slowly.

  Solution: The Linux kernel has problems with a few motherboard/BIOS not reporting total memory available. To check that all installed memory is being recognized, type the following at a shell prompt:

  >     cat /proc/meminfo

  the output will include a line looking like:

  >     MemTotal: ######## kB

  where "########" should equal the amount of memory your computer has. If it doesn't, you'll need to explicitly tell the kernel by editing the file `/etc/lilo.conf`.

  Details for doing this can be found at: http://www.redhat.com/support/docs/faqs/rhl_general_faq/FAQ-7.html

- [182564] When installing JBuilder on Linux, in order to use the all of the features the integration with Borland Enterprise Server, you must have the Korn shell installed.
- [180257] The installation progress bar stays near the end for a very long time, making it appear that the installation program has hung.
  Workaround: The installation will complete successfully after waiting for a while. The installation program is updating the permissions on all of the installed files--a process that can take a while.

### 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:

- Windows: Do one of the following:
  - Run the following from the directory where you installed JBuilder 2005: `Uninstallxxxxxxx\Uninstallxxxxxxx.exe`.
  - Choose Start|Programs|Borland JBuilder 2005 xxxxxxx|Uninstall JBuilder 2005 xxxxxxx.
  - Choose Settings|Control Panel|Add/Remove programs and select Borland JBuilder 2005 xxxxxxx from the list.
- Linux: `Uninstallxxxxxxx`
- Solaris: `Uninstallxxxxxxx`
- Macintosh: Run one of the following from the directory where you installed JBuilder 2005:
  - Uninstall JBuilder 2005
  - `Uninstallxxxxxxx/Uninstallxxxxxxx`

### Known problems

- [206183] Uninstalling JBuilder might leave some files on your system which will need to be manually removed. Specifically on the Macintosh, you will likely need to remove files from the `usr/local/bin` directory.
- [206123] JBuilder uninstall is not removing the following files from the `JBuilder/lib` directory:
  - `admintool.jar`
  - `gantry-common.jar`
  - `sbtoolbar.jar`
  - `servers`
  - `ss.jar`
  - `starteam-extensions.jar`
  - `starteam-gui.jar`
  - `starteam60.jar`
  - `streplicate.jar`
- [173965] The installation program might report that it completed successfully without installing all of the files. This is most likely to happen if there is not enough disk space to complete the installation, but enough is detected by the installation program to begin the installation process.
- [163474] Windows only: During a full installation of JBuilder Enterprise and Borland Enterprise Server, after the Borland Enterprise Server installation is finished, an error message is displayed:

      Borland JBuilder Enterprise Install: javaw.exe - Wrong Volume
      The wrong volume is in the drive.  Please insert the volume JBuilder into the drive:

  Workaround: This error does not affect your installation of either JBuilder or Borland Enterprise Server. If the error dialog persists even after you have clicked Cancel several times, try the following:
  1. Start the Windows Task Manager.
  2. Select the Processes tab.
  3. Select the `install_windows.exe` process.
  4. Click End Process.
  5. If the error dialog is still visible, click Cancel again.
- [123127] When a user reinstalls JBuilder to a different directory than the first time, the default JDK configuration points to wrong location. The user cannot compile code.
  Workaround:
  1. Choose Tools|Configure|JDKs.
  2. Select this SDK on the Configure JDKs dialog.
  3. Click on the Change button to change the JDK home path to a valid location.
- Solaris only:
  - The Browse CD button does not work on the main installation launcher.
    Workaround: Verify that `dtfile` (typically in `/usr/dt/bin`) is in your PATH.
  - The "JBuilder on the Web" or "Setup information" buttons do not work.
    Workaround: Verify that `netscape` (typically in `/opt/NSCPcom`) is in your PATH.

[ 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:

- Make sure you are using the version of the JDK installed with JBuilder. Some Optimizeit functions will not operate properly unless you are running the correct version.
- [208857] Optimizeit will not run after disconnecting from a network using FlexLM concurrent licensing.
- [208813] Linux and Solaris only: The Optimizeit tools do not run when installed to a directory path that contains spaces.
- [207913] When started from a console on Macintosh, JBuilder displays this message:

      Optimizeit Request Analyzer could not find the directory where it was installed.
      Please perform the integration with JBuilder from Optimizeit again.
      Optimizeit Error: failed to find Request Analyzer class

  Request Analyzer is not supported on the Macintosh.
- [186029] When using IBM JDK 1.3, Optimizeit does not support testing of servlets or JSPs.
- [184026] The JDK 1.4.1 heap dump facility is unstable. If you get a crash in the Instance Display (Reference Graph) mode or Memory Leak Detector, try switching to JDK 1.4.0 or JDK 1.4.2.
- [182501] When you profile applications using IBM JDK 1.4, some Abnormal Container Growth errors are not reported by the Application Quality Analyzer.
- [149715] When testing an application using the IBM JDK 1.3 with Code Coverage, the test may return an OutOfMemory exception. This problem can be fixed by either specifying the java parameter `-Dccoverage.classpath=` to the java invocation, or by increasing the minimum heap size to a bigger value using the `-Xms256M` startup command parameter (where 256 is an example of the minimum size, in megabytes).
- [149433] IBM JDK 1.3.1 crashes when the Optimizeit Profiler requests a JVMPI heap dump. For example, this could happen if you select a class in the Heap view and click on Instance view. This problem does not occur with IBM JDK 1.3.
- [163814] When testing applets using the German version of Optimizeit, you must use JDK 1.4 and above if your class names include German characters. Testing with JDK 1.3.1 or older is not possible because the `oldjava` command does not recognize German characters in a class name.

#### Windows Issues:

- On Windows machines, you may get better performance if you disable the Windows default indexing program, `findfast.exe`. This program can be manually disabled from your control panel.
- On Windows machines, Hotspot is not the default virtual machine setting for JDK 1.3.1; to use Hotspot with this JDK, you must open the Virtual Machines tab on the Settings dialog box and select the Hotspot option.
- [162075] If you perform an integration from a stand-alone tool (Profiler, Thread Debugger, or Code Coverage), you must re-perform the integration for each Optimizeit tool. If you perform an integration from the Optimizeit Suite, the integration will work for all tools.

#### Solaris and Linux Issues:

- [182735] On Solaris, early classes cannot be instrumented with JDK 1.4.x. This means that some errors, such as container growth errors, cannot be generated.
- On Solaris machines, some windows have clipped text because the font is too large. Lower your font size and refresh the screen to see all the information.
- [149121] On UNIX, by default some virtual machines (such as JDK 1.2.2) use green threads, but Thread Debugger does not support green threads. If you are using green threads, Thread Debugger will not be able to launch the Java program. Before running your test program, make sure the virtual machine is using native threads by setting the environment variable THREADS_FLAG to native. If native threads are not available on your JVM (for example, 1.3.0 or 1.3.1. JDK classic runtime for Linux) then you must install another virtual machine. If you must use JDK 1.3.0, the Blackdown version has a native implementation. See the Troubleshooting Guide for more information on selecting native or green threads.
- [149782] On Linux machines, the IBM JDK 1.2.2 will not start testing when the test is begun from within the Optimizeit UI; this is true for all three Optimizeit tools. This is because of the way native threads are used in the virtual machine. If you need to start a test from within Optimizeit (specifying the test parameters on the Settings dialog box and clicking Start Now) you must use a different JDK.

#### Other Issues

- [185438] PDF reports generated from Optimizeit Profiler or Progress Tracker have margins that may be too small for some printers, causing the edges of the reports to be cut off during printing. You can adjust the settings in Acrobat's Print dialog box (File|Print) to prevent the edges of the reports from being cut off during printing. In the Print dialog box, depending upon your version of Acrobat, either select Shrink Oversized Pages To Paper Size, or set Page Scaling to Fit To Paper.
- [185608] When Optimizeit is installed with JBuilder 2005 Enterprise Edition, Progress Tracker and Filter Editor cannot be started from the `<jbuilder>/OptimizeitSuite` directory. Instead, you must start Progress Tracker and Filter Editor from within the JBuilder IDE. To start Progress Tracker from within JBuilder, choose Progress Tracker from the Tools menu. To start Filter Editor from with JBuilder, click the Edit Filter button on the Optimize page of the Edit Runtime Configurations dialog box (Run|Optimize Project).
- [181010] If you are using WebSphere 5 with the Deployment Manager, then you need to follow these steps to integrate Optimizeit:
  1. Run the WebSphere 5 integration wizard from the Optimizeit Tools menu (Tools|Application Server Integration|IBM WebSphere 5), and click Next.
  2. Instead of selecting the AppServer directory of WebSphere, select the DeploymentManager directory, then click Next.
     The wizard guides you through the rest of the integration.
  3. When the integration is complete, restart the Deployment Manager (for example, from the Windows Start menu, Program|IBM WebSphere|Application Server 5.0|Network Deployment).
  4. Start the application server instance with which you have integrated Optimizeit.
     The application server starts with the Optimizeit tool selected in the Audit System Selector.
- [168678] Optimizeit requires that the `main` method of the application you want to profile be public. Attempting to profile classes with private or protected `main` methods will now result in a `ClassNotFoundException` being thrown.
- [151325] If you choose to automatically generate the `server.xml` file (the default option) when testing servlets on Tomcat, the temporary directory path must not contain any high-ASCII characters. Otherwise, Tomcat will fail to parse the generated `server8080.xml` file.
- [163141] On Unix Systems, after integrating TogetherSoft with Optimizeit, and before starting TogetherSoft, enter the following command at your command prompt:
  `export LD_LIBRARY_PATH=<together_dir>/bin:<together_dir>/lib:$LD_LIBRARY_PATH`
  where <together_dir> is the TogetherSoft directory.

[ top ]

## Web Services

### Known Problems

- [208538] In order to build successfully when using the WebLogic toolkit with Export to Ant, you need to uncheck "Use Borland Java Compiler" in the build.xml properties Ant page.
- [207835] The WS-I shell scripts need to be modified in order to run the WS-I Analyzer and Monitor inside JBuilder on Unix platforms.
  Workaround on Linux & SUN JDS:

  Enter the following commands at the command prompt:

      cd /tools/ws-test-tools/java/bin
      dos2unix Analyzer.sh
      dos2unix Monitor.sh
      chmod +r+x  Analyzer.sh Monitor.sh

  Workaround on Solaris:
  Enter the following commands at the command prompt:

      cd /tools/ws-test-tools/java/bin
      dos2unix Monitor.sh temp.sh
      mv temp.sh Monitor.sh
      dos2unix Analyzer.sh temp.sh
      mv temp.sh Analyzer.sh
      chmod +r+x  Analyzer.sh Monitor.sh

  Workaround on Mac:
  1. Open `Analyzer.sh` and `Monitor.sh` in `ws-test-tools/java/bin`.
  2. Add this line in the beginning of shell script: `#! /bin/sh`
  3. Enter the following commands at the prompt:

         native2ascii Monitor.sh temp.sh
         mv temp.sh Monitor.sh
         native2ascii Analyzer.sh temp.sh
         mv temp.sh Analyzer.sh

  4. And change permission if needed: `chmod +r+x Analyzer.sh Monitor.sh`
- [207018] When using WebLogic 8.1 and 7.x with the Axis toolkit, running generated test cases fails.
  Workaround: Move the Axis library to the top of the list in the required libraries for your project and run the test case again.
- [203127] Running the TCP Monitor results in a BindException when using JBoss 3.2.x.
  Workarounds:
  1. Modify the `server.xml` file in the JBoss deploy directory to point to a different port, such as 8090.
  2. Configure the TCP Monitor so that its listening port is 8090 and its target port is 8080 (or the port number that you set).
  or
  1. Modify the client/test code so that it will send its request to a different port (such as 8090 instead of 8080).
  2. Configure the TCP Monitor so that its listening port is 8090 and its target port is 8080 (or the port number that you set).
- [186402] Building an application module with a web services web module and a non-webservices web module does not include the non-webservices web module in the EAR.
  Workaround:
  1. Open the web services designer and click on the Module settings button in the toolbar and select the option "Use saved designer output".
  2. Expand the webservices designer node and open `build_WebLogic.xml`.
  3. Locate the task "JBServicegenTask" and modify the `servicegen` element by adding the following attribute:

         overwrite="false"

  4. Rebuild the application module.

[ top ]

## Enterprise JavaBeans (EJB)

### Tips

- See the Developing Applications using Enterprise JavaBeans for additional information on developing and deploying EJBs using JBuilder 2005.
- If you want to add a service pack to your application server configuration:
  1. Choose Enterprise|Configure Servers.
  2. Select your server from the list of servers in the pane on the left side of the dialog box.
  3. Click the General tab, then the Custom tab, if they are not already selected.
  4. Click the Add button.
  5. Navigate to the location of the service pack.

### Known problems

- [209419] To run a CORBA application, the following VM parameters need to be added to the application's run configuration:

      -Dvbroker.agent.port=<smart agent port>
      -Dborland.enterprise.licenseDir=<USER_HOME>
      -Dborland.enterprise.licenseDefaultDir=<BES_install>/license

  where `USER_HOME` is the default location of the Borland license directory (`.borland`). If this is different from the default license directory, replace it with the directory where Borland license information is stored.
- [209361] Linux only: Borland Enterprise Server is currently not supported for the Sun Java Desktop System platform.
- [206096] The Borland Enterprise Server console is not available when JBuilder is configured for Borland Enterprise Server 5.2.1.
  Workaround: Download and install the patch available on the JBuilder 2005 updates page.
- [201628] Redeploying a DAR causes the datasource objects contained in it to be re-registered in the JNDI tree. However, this does not imply that any JDBC pools instantiated in the partition using the earlier datasource data automatically gets refreshed with the new datasource information (e.g. if the previous datasource pointed to DB1 and the refreshed DAR points to DB2 then JNDI is updated but the JDBC pool still points to DB1).
  Workaround: Restart the Borland Enterprise Server (partition), or stop the server, deploy, and then start the server.
- [SCR 66767] Creating a CMP 2.0 EJB using the Object Gallery generates a CMP 1.1 EJB even though the EJB version is designated as 2.0 in Project Properties.
  Workaround: Use one of the following methods,

  Correcting a CMP 1.1 Bean using the Inspector

  1. Right-click the EJB, and choose Properties. The Inspector opens.
  2. Choose the Entity EJB tab.
  3. Choose Bean-managed for the Persistent management option. This turns off CMP for the bean.
  4. Choose Container-managed for the Persistent management option. This designates the bean as CMP 2.0.

  Correcting a CMP 1.1 bean using EJB verification

  1. Right-click the EJB, and choose Verify EJB | Verify as CMP 2.0.
  2. Observe any error messages generated in the Message pane. These messages indicate any inconsistencies between the EJB version specified in the Project Properties and the EJB.
  3. Right-click on one of the error messages, and choose Correct All.

  Using the diagram toolbar to create a CMP bean

  1. Create an Entity EJB using the diagram toolbar.
  2. Right-click the EJB, and choose Properties. The Inspector opens.
  3. Choose the Entity EJB tab.
  4. Choose Container-managed for the Persistent management option.
- [203532] Trying to bring up the Borland Enterprise Server 5.2.1 console with both Borland Enterprise Server 5.2.1 and 6.0 configured throws a ClassCastException.
  Workaround: Configure JBuilder to use only Borland Enterprise Server 5.2.1 or 6.0.
- [202084] Borland Enterprise Server (5.2.1 and 6.0) users using JDataStore and creating databases using the JDataStore tools shipped with JBuilder should create their datastores in JDS 6 format. Do not choose to copy over any JDataStore libraries from JBuilder (Run|Configurations. Server run configuration. Libraries) when starting up the server in JBuilder.
- [199850] Linux only: On Linux Red Hat Advanced Server 3.0 (x86), the Configure Servers dialog box shows that both Borland Enterprise Server 5.2.1 and Borland Enterprise Server 6.0 available as servers. Borland Enterprise Server 5.2.1 is not supported on Red Hat 3.0.
- [191802] If both Borland Enterprise Server 5.2.1 and 6.0 are configured in JBuilder, then you can not open the Borland Enterprise Server 6.0 console for a Borland Enterprise Server 6.0 project.
  Workaround: Configure JBuilder to use only Borland Enterprise Server 6.0.
- [184164] Including a library as a dependency for a module does not include JARs in the library which are shared in the client library.
- [184266] The Borland Enterprise Server 5.2.1 partition does not always shut down cleanly.
  Workaround: Turn off the connector service in the Project Server Properties 'Services:' panel, or in the individual Run Configurations.
- [171998] Creating a module from a directory enforces the existence of a META-INF directory. Descriptors do not need to be stored in a directory name META-INF.
- [163536] The partition does not start up in JBuilder. Instead, it displays the error message: "Socket connection timed out".
  Workaround : Check that you have the following line in your `hosts` file.

      127.0.0.1    localhost

  The `hosts` file is located in:
  - Windows: `WINDOWS_HOME/system32/drivers/etc`
  - UNIX: `/etc/`
- [163028] Borland Enterprise Server 5.2: The main class cannot be found if it is located in a `.java` file with a name containing extended characters.
  Workaround: Use the version of the JDK delivered with JBuilder.
- [162276] WebLogic 8.1 (WebLogic toolkit): If the Servicegen overwrite flag is manually set to false, web services does not get generated if only ejb-based webservices are present.
- [160176] When using Borland Enterprise Server 5.2.1 on Linux, if you launch the SonicMQ Explorer from the Borland Enterprise Server Console within JBuilder, you cannot shut it down.
  Workaround: Launch it from the stand-alone Borland Enterprise Server Console.
- [131969] WebSphere 4.0 Single Server JSP Web Run: When the web view is launched, server side `ClassCastException`s are thrown. This does seem to happen when running the server from the command line. These exceptions do not seem to affect any functionality.

[ 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

- When JBuilder starts a server that is providing the JSP/Servlet service, it attempts to wait for the web container to be loaded before switching to Web View for the desired Launch URI. With some servers, the web container may start responding before all of the web application contexts are loaded. If the desired web application context is not loaded within thirty seconds after the server process has started, you may see HTTP errors in the Web View such as "500 No Context" or "503 Service Unavailable". If this occurs, wait for the server to finish loading, then click the Refresh button in the Web View's toolbar (or load the Launch URL with an external browser).
- [204065] Class files are put in wrong directory in an WAR archive if obfuscation (RetroGuard and ProGuard) is used.
- [171787] If you encounter problems when trying to debug JSPs when using Tomcat 4.1, try this workaround:
  1. Download Tomcat 4.0.x.
  2. Copy `jasper-compiler.jar` and `jasper-runtime.jar` from your Tomcat 4.0 installation (`TOMCAT_HOME/lib`) to the Tomcat 4.1 installation (`TOMCAT_HOME/common/lib`).
- [161837] Applets that use AWT components may have rendering problems when running in JBuilder's built-in browser.
  Workaround: Comment out `addbootpath ../lib/lawt.jar` in your `bin/jbuilder.config` file.
- [159574] Tomcat 4.1: Errors occur when compiling JSPs in subdirectories that are not valid package names (containing invalid characters like '-' or being Java reserved words). See http://issues.apache.org/bugzilla/show_bug.cgi?id=17505 for more information.
- [155264] Tomcat 4.1: Building a WAR file with a ZIP file contained in the dependency results in an error message.
  Workaround: Rename the ZIP file with a `jar` extension. Or, see if an archive with the JAR extension is available.
- [154615] Trying to debug two JSPs with the same name deployed in different web contexts, always loads the JSP for the web application deployed first. (This is a generic Jasper bug in the latest versions of Tomcat and WebSphere 5.)
- [150650] The `cactus.properties` file is generated with an incorrect port in the following cases:
  - The wizard is launched with a server running and the user clicks Finish at the first step.
  - The wizard is launched in a project with multiple run configurations with different port numbers for the JSP/Servlet service.

  Workaround:

  1. Select the server run configuration and ensure that the server is not running when the Cactus Setup wizard is launched.
  2. Open `cactus.properties` in your test directory (test path in the Project Properties dialog, Paths page), then edit the `cactus.contextURL` property, adding the correct port number. You will have to rebuild the project after doing this.

[ 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

- Error: "The CVS Client is either not installed or not located in your PATH. Please install CVS or add CVS to your PATH settings." When using Microsoft Windows 98, you will encounter this error when attempting to use CVS with JBuilder for the first time. To correct this problem, do the following:
  1. Exit JBuilder.
  2. In you JBuilder `bin` directory, rename the file `cvs95.exe` to `cvs.exe`.
  3. Restart JBuilder.
- StarTeam only: Custom tools don't appear in the JBuilder 2005.
  Workaround: The StarTeam integration in JBuilder 2005 is ready to make use of StarTeam Enterprise Advantage custom tools. This feature requires StarTeam Extensions 6.0. You can upgrade the StarFlow Extensions project in their Enterprise Advantage Servers to make use of the tools.
- StarTeam only: The Alternate Property Editors are not embedded in JBuilder 2005--they appear as modal dialogs.
  Workaround: Upgrade your StarTeam Extensions to version 6.0 (even on older servers). Copy the `starteam-extensions.jar` from the installation directory to your JBuilder `lib` directory. See the StarTeam Extensions 6.0 `readme` file for more information.
- [CR 26700] StarTeam only: If process items are required by the project, StarTeam requires you to select a valid process item on the StarTeam page in the Commit Browser for all actions. This should not, however, be required for the following actions: Undo Checkout, Merge, and Handle Individually.
  Workaround: When you perform a Undo Checkout, Merge, or Handle Individually action in the Commit Browser, select a valid process item, but do not select the Mark Selected Process Item As Fixed/Finished/Complete check box.
- [209366] When running Visual SourceSafe 6.0d, JBuilder can hang due to a VSS command not returning if the machine locale setting is not English.
  Workaround: To recover, kill `SS.EXE` using the Windows Task Manager. If you have to do this, the JBuilder integration with Visual SourceSafe will no longer be functional until the application is restarted.
- [208568] StarTeam continues to check status of files in the repository even when "Modified in Repository" and "Not in Repository" in Project|Project Properties|Decorations are disabled.
- [208405] Opening some Clearcase projects cause the Project Pane to paint very slowly when the project is using the default decorators.
  Workaround: Turn off the "Modified in Workspace" decorators.
- [208213] Macintosh only: The nodes in a Caliber project displayed using the plug-in do not expand or collapse when you click the triangle widget to the left of the requirement.
  Workaround: You can expand or collapse the nodes by double-clicking the text of the requirement.
- [206525] Placing a project into a Subversion repository with a name that contains extended characters can cause several issues, including:
  - The Annotations page will not display the annotation numbers and user information for each line in a file.
  - You will not be able to pull the same project using the wizards. Project names containing extended characters are corrupted in the browse dialog for the Pull Project From Subversion wizard. If you try to pull a project with a corrupted name, you get a "<project url> does not exist" error and the import operation will fail.
- [205652] Linux and Solaris only: Dragging a requirement from CaliberRM to a source file shows a non-drop icon for the mouse pointer, but it drops the symbol anyway.
- [186445] StarTeam only: JBuilder does not include an encryption library. Without one, users cannot connect to encrypted StarTeam servers.
  Workaround: Please contact StarTeam Developer Support for information on obtaining an appropriate encryption library.
- [178969] StarTeam only: When pulling a project with the folder name having a "/" or "\" character, and then something following it, causes a "String index out of range: -1." error.
- [151112] If a user tries to add more than 4 files to a Visual SourceSafe project at one time, the status/appropriate action of the first 4 files will be displayed in the status and commit browsers, but any remaining files will not be listed.
  Workaround: Add files to the project in increments of 4. Or, add all of the files to the Visual SourceSafe database, then close and reopen the commit and status browsers: all of the source files will be listed.
- [121874] A Macintosh-specific version of CVS is not installed.
  Workaround: Download and install the Developer Tools at: http://www.opensource.apple.com/tools/cvs/.

[ 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

- [209131] Cocoon fails to run with Borland Enterprise Server 6.
  Workaround: In the `partition.xml` file (example location: `\BES\var\domains\base\configurations\jbuilder\mos\jbpartition\adm\properties\partition.xml`), add "org.apache.xerces,org.w3c.dom,javax.xml,org.xml.sax,org.xml.dom" to the container prefixes so the container element looks like this: `<container system.classload.prefixes="java.,javax.ejb.,!javax.servlet.jsp.jstl.,javax.servlet.,javax.jms.,org.apache.log4j.,org.apache.xerces,org.w3c.dom,javax.xml,org.xml.sax,org.xml.dom" verify.on.load="true" classloader.policy="per_module" classloader.classpath="lib/app;${install.root}/lib/tomcat/jasper/jasper-compiler.jar;${install.root}/lib/tomcat/jasper/jasper-runtime.jar" use.validating.parser="true"/>`
- [208653] Cocoon fails to run with WebSphere 5.0. This happens because WebSphere 5.0 shipped with IBM's JDK 1.3 and Cocoon is on JDK 1.4.
  Workaround: If possible, upgrade to WebSphere 5.1.0.4.
- [178821] Cocoon doesn't run.
  Workaround: This is a Tomcat/JDK 1.4.2 incompatibility issue. One way to work around this is to copy all the latest XML-related jars (`xalan.jar`, `xerces.jar`, and `xml-apis.jar`) into the `<tomcat home>/common/endorsed` subdirectory.
- [172500] Checking the "Selections" Trace option while transforming an XML file causes transformation to fail.
  Workaround: Download and install the latest version of Xalan from http://xml.apache.org/xalan-j/.
- [109759] There is an inconsistency in the requirement for putting quotation marks around table names in the XMLDBMSTable and XTable components. XTable requires quotation marks; XMLDBMSTable does not.
- [109254] Trying to transfer data to Interbase using XMLDBMSBeans causes JBuilder to hang.
  Workaround: Download the InterClient/InterServer 2.02 patch from http://www.borland.com/devsupport/interbase/interclient.
- [108694] After entering a value in KeyEditor for the XMLDBMSTable customizer, the user has to press Enter in order for the value to be accepted. Also, the actual value shows "<NL>" at the end, which should be removed.

[ 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

- When a class is compiled without debug information, the debugger will not be able to see any local variable information. However, it can see the "this" object. If you are debugging and only the "this" object shows up, it could mean that the class was built with no debug information. It could also mean that there are no local variables in the class.
- In JDK 1.3.0, 1.3.0_01, and 1.3.0_02, debugging using the classic VM is much faster than debugging with HotSpot. If you see a noticeable slowdown in your program when you debug it, try adding the `-classic` option as the first VM parameter in the runtime configurations for your project before you debug. Note that JBuilder will do this by default as appropriate for these JDKs.
- JBuilder now has a checkbox in the Configure JDKs dialog (use Tools|Configure|JDKs) that allows you to set whether the `classic` parameter will be automatically added to the debug command line when using this JDK in your project. JBuilder tries to default this checkbox appropriately. If the JDK is one that does not support a classic VM, this option will not be selected.
- If you are experiencing intermittent crashes when debugging in JBuilder under Windows, this could be caused by the presence of the `dt_shmem.dll` in the JDK. This DLL is used as an implementation of the debugging protocol on Windows (used in communication between the debugger and debuggee), and causes intermittent problems. To avoid using this DLL, remove it from any JDKs you are planning to use for debugging, and make sure that any directories that contain this DLL do not appear on your system PATH. If you do this, the alternate `dt_socket.dll` will be used for the debugging protocol. This DLL does not appear to have the problems of `dt_shmem.dll`.

### Known problems

- [148698] Debugging a sample project fails when `<JB_HOME>` contains international characters (entered during installation). Debugging a new project whose files are stored in a directory with international characters also fails.
  Workarounds: Try one of the following:
  - Change the J2SE installation path that the debugger uses from `<JDK_HOME>\jdk1.4` to `<JDK_HOME>jdk1.4\jre`.
  - Copy `<JDK_HOME>\jdk1.4\jre\bin\dtshmem*` and `<JDK_HOME>\jdk1.4\jre\bin\148 dt_socket*` to `<JDK_HOME>\jdk1.4\bin`, then run the debugger with the J2SE installation path in your debugger set to the value: `<JDK_HOME>\jdk1.4`.
- [135160] Linux only: While using the remote debugging feature of attaching JBuilder as a client to a running remote process, a `sun.io.MalformedInputException` in `sun.io.CharToByteSingleByte.convert()` is thrown.
  Workarounds:
  - Disable breakpoints for 'All uncaught exceptions' in the Breakpoints dialog (Run|View Breakpoints).
  - Edit `JB_HOME/jdk1.4/jre/lib/font.properties` and insert a "#" at the beginning of every line that contains the string "symbol".
- [134354] Stopping on an exception breakpoint in a JSP displays strange behavior. When the program stops, the point of execution is not shown. The debugger status label shows a line in the java code of the translated JSP and the JBuilder status bar says "Can not locate Jsp1$jsp.java from project source/class path". The execution point for the exception breakpoint will not be shown in Tomcat unless a line-breakpoint is also defined in that JSP file.
- [100401] Linux only: Choosing Step Over causes JBuilder to freeze.
  Workaround: Add the `-classic` option as the first VM parameter in the runtime configurations for your project when debugging.

[ 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

- Extend the abstract class in question.
- Be concrete (not be declared abstract itself).
- Be public.
- Have a default `public` constructor.

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

- [209302] Adding an EJB component to the designer displays `java.lang.ClassNotFoundException: javax.ejb.EJBObject createDefaultPropertyEditor(javax.ejb.EJBObject)` in the Message pane. The Message pane now cannot be closed, not even by Ctrl-Alt-M.
- [206769] An IllegalAccessException is thrown when dropping any components from the EJB tab to the designer.
- [205424] Cannot load the UI Designer with a server set for the project.
  Workaround: Do not set a server for the project.
- [186526] If you have more than one file open in the Designer, and then change the Look and Feel for a file to a Look and Feel different from the one under which JBuilder is running, the content of the Design and Source views become out of synch with the other files.
  Workaround: Close JBuilder and restart. If you want to test out your application in different Look and Feel, the recommended way is to do it by changing the JBuilder Look and Feel by choosing Tools|Preferences|Browser|Look & Feel rather than selecting the Look & Feel from context menu in the Designer.
- [108178] Attempting to define an event handler with the same name as the event results in generated code that overflows the stack when executed. This code is completely legal, it just calls itself recursively.

[ 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:

- `Browser.findBrowser()`
- `Browser.getActiveBrowser()`
- `Browser.getBrowsers()`
- `Browser.getBrowsersNonZ()`

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:

- The JDataStore High Availability Server: incremental backup, automatic failover
- The new Server Console graphical interface
- New SQL functions
  - `BIT_LENGTH`
  - `CASE`
  - `COALESCE`
  - `CURRENT_ROLE`
  - `CURRENT_USER`
  - `DB_ADMIN`
  - `DB_UTIL`
  - `NULLIF`
  - `OCTET_LENGTH`
  - `USER`
- New and updated SQL statements
  - `CREATE SCHEMA`, `DROP SCHEMA`
  - `CREATE VIEW`, `ALTER VIEW`, `DROP VIEW`
  - `CREATE ROLE`, `SET ROLE`, `DROP ROLE`
  - New CREATE TABLE options
  - New ALTER TABLE options
  - New DROP TABLE options: `CASCADE` and `RESTRICT`
  - `CREATE JAVA_CLASS`, DROP JAVA_CLASS
- Security management
  - GRANT and REVOKE
  - CREATE USER, ALTER USER, DROP USER
- Transaction management
  - SET TRANSACTION
- Other new SQL
  - New keywords
  - New data type: `TINYINT`
  - Many new JDBC escape functions
  - ISQL cross-platform SQL command-line utility

### Product notes

- Choosing between Server Console and JdsExplorer
- A change to the "Copy JDataStore" menu item

### New and updated documentation

- New chapters
- Escape syntax for calling stored procedures is now documented.
- Updated documentation on returning JDBC ResultSets

### Getting started with JDataStore 7

- Migrating older databases to JDataStore 7
- Using JDataStore 7 with JBuilder and the Borland Enterprise server

### 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 `GRANT`s. 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:

- The table name now includes a schema name.
- You have the option of specifying a position for each column.
- You can use the [NOT] RESOLVABLE option to track data changes for DataExpress.

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:

- You can rename the entire table; this is how you assign a table to a different schema.
- You can make the table `RESOLVABLE` or `NOT RESOLVABLE`.
- At the column level you can:
- - Change the datatype of a column
  - Set whether a column is nullable
  - Rename a column
  - Change the position of a column within the table

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:

- It grants object privileges—such as `INSERT` or `SELECT`—on tables or java methods to `PUBLIC`, users, or roles.
- It grants database privileges—such as `STARTUP` or `RENAME`—to users or roles.
- It grants roles to users or roles.

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:

- It revokes object privileges—such as `INSERT` or `SELECT`—on tables or java methods from `PUBLIC`, users, or roles. It has `CASCADE` and `RESTRICT`,options.
- It revokes database privileges—such as `STARTUP` or `RENAME`—from users or roles.
- It revokes roles from users or roles.
- It revokes the `ADMIN` option from a role without revoking the role itself.
- It revokes the `GRANT` option from a privilege without revoking the privilege itself.

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

- Primary Mirrors
- Read-only Mirrors
- Directory Mirrors.

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

- Auto Failover
- Instant Synchronization
- Automatic Synchronization
- Manual Synchronization

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.

- The "What's New" chapter lists the new features and provides links into those topics in the book.
- The "JDataStore Server Console" chapter provides details about the new Server Console interface and the things you can do with it.

#### 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.

- Tables with a column named INTERNALROW, could not be exported using ISQL. This problem has been fixed.
- The data presented in the ServerConsole and the SQL tab in JdsExplorer for a query like: "SELECT * FROM MY_VIEW" could not be edited even if the view was updateable. This problem has been fixed.
- TxException LOCK_TIMEOUT errors fixed for situations where table lock escalation is triggered to max row locks exceeded.
- Problem when value from source cursor had a maxInline setting that was larger than the destination cursor. Cursor now can convert inline into blob if necessary
- Drop column no longer fails to have any affect if another connection has a prepared statement that references the same table.
- The command SHOW TABLE in ISQL required an explicit schema name. This problem has been fixed.
- Cannot drop primary mirror. Problem is now fixed
- ResultSetMetaData now returns the correct column count when an updateable ResultSet is used.
- Column from Primary keys were sometimes reported to be nullable through DatabaseMetadata.getColumns().This problem has been fixed.
- If 2 timestamp values are given as 2 literals the first value is stored for both values. This problem has been fixed.
- The Date and Timestamp literal JDBC escape formats were incorrectly documented. 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

- [206399] The LD_LIBRARY_PATH set in the environment does not get passed to JBuilder. This causes problems for the DB2 JDBC driver, as it requires the library path be set to locate native components of the driver.
- [151119] Solaris only: The automounter on Solaris might mount the CD-ROM to a drive name with a '#' in it. This causes the installation to fail. If this occurs, reboot your machine before installing JBuilder.
- [100311] Warnings are issued when installing JBuilder:

      Warning:
        Name: HorScrollBar
        Class: XmScrollBar
        The specified scrollbar value is greater than the maximum scrollbar value minus the scrollbar slider size.

  Workaround: Ignore: the warning is harmless.
- [90559] When a new window pops open (CodeInsight, code templates, etc.), focus to the editor is lost. (This works properly using KDE.)
  Workaround: (For GNOME users) Go to the Control Center and change the "Focus Behavior" so that "Dialog windows inherit the focus from their parent" is turned off.

[ top ]

## Macintosh

### Known problems

- [208213] The nodes in a Caliber project displayed using the plug-in do not expand or collape when you click the triangle widget to the left of the requirement.
  Workaround: You can expand or collapse the nodes by double-clicking the text of the requirement.
- [207913] When started from a console on Macintosh, JBuilder displays this message:

      Optimizeit Request Analyzer could not find the directory where it was installed.
      Please perform the integration with JBuilder from Optimizeit again.
      Optimizeit Error: failed to find Request Analyzer class

  Request Analyzer is not supported on the Macintosh.
- [121874] A Macintosh-specific version of CVS is not installed.
  Workaround: Download and install the Developer Tools at: http://www.opensource.apple.com/tools/cvs/.

[ 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

- The following samples are not supported for Borland Enterprise Server 5.2.1:
  - EJB/cart
  - EJB/sort
  - webservices (server and client samples)
  - J2EE/blueprints/petstore
- "Error # 914: unable to write to output directory". If you have installed JBuilder as root but are running as a regular user, you need to copy the entire samples tree to a directory in which you have full read/write permissions in order to run them. While it is possible to copy projects individually from the sample tree, there are several samples which require access to files in peer-level directories. Such samples have been modified to look automatically for such files relative to the default sample tree hierarchy and display a message at runtime indicating the path being used to locate such files.

  An easy way to copy the entire samples tree is to use the `cp -R` command. For example, to copy the tree to a `samples` subdirectory of your home directory, do the following:

  >     % cd
  >     % cp -R /usr/local/jbuilder/samples

- [73147] You must compile the JDataStore, dbSwing and DataExpress samples before using them in the Designer. This will make classes and data available to the designer.
  If you open a sample in the Designer and get an error message such as `Filename property set to null` or `URL cannot be null`, open the file in the editor, modify the source (such as a adding and removing a space), then rebuild the project. You should now be able to open the project in the Designer without errors.

[ top ]

## Performance

These are some suggestions for improving local performance of JBuilder.

- You can get smoother garbage collection performance by enabling incremental garbage collection. Use the following VM setting to do this:

      vmparam -Xincgc

  It is worth noting that the incremental garbage collector, while smoothing GC hiccups, also slows the VM down noticeably. We suggest using this only if you experience long garbage collection-induced pauses while using JBuilder.

- You can reduce the amount of background source parsing for the structure pane by increasing the parsing time delay. To do this, right click the structure pane and select properties. Increase the Parse Delay setting.

[ 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:

- [79877] (Windows platforms only) European versions of the command line compilers (bcj and bmj) may display accented characters incorrectly in a console window. The workaround is to invoke the compiler as follows (Note: `<path_to_JBuilder>/lib/jbuilder.jar` must be on your classpath):

  >     java -Dfile.encoding=Cp850 com.borland.compiler.frontend.Main -encoding Cp1252 myFile.java

  The first encoding option above is passed to the Virtual Machine and the second encoding option is passed to the compiler. Please note that this example assumes Code Page 850 is used in the console window (as shown by the `chcp` command), and that your java files are encoded in Code Page 1252 (which is the case when a Windows based editor was used, rather than an "old style" DOS-based editor).

  If your program sends accented characters to the console window, they will be displayed correctly if you use the following (assuming your console window uses Code Page 850, as shown by the DOS `chcp` command):

  >     java -Dfile.encoding=Cp850 myClassFile

### Other Known Problems:

- [70027] When `IntlSwingSupport` is dropped on a Frame in the designer, it may be instantiated after other class members such as a `JFileChooser`, `JOptionPane`, or `JColorChooser`, which means the translated resources are loaded too late for initial display purposes. Instantiating `IntlSwingSupport` as early as possible during your application startup will fix this problem.
- [72107] Undo <Ctrl_> under Emacs keymap is mapped to <Ctrl Shift -(hyphen)> using Japanese Keyboard.
- [72519] Undo <Ctrl_> under Emacs keymap does not work using French Keyboard. The workaround is to use <Ctrl x><u> or use the keymap editor to customize the keymapping.
- [73279] If the environment variable, LC_CTYPE, is set to the POSIX 'C' locale, the Sparc Compose key may not function for certain versions of Xlib client libraries.
- [74063] (Japanese OS only) Under bold and italic attributes, the cursor will stop in the middle of a character. To workaround the problem, add the following line to `JBuilder2005/bin/jbuilder.config:`
  `vmparam -Dprimetime.editor.useVariableWidthFont=true`
  After the update, remove `~/.jbuilder2005/user.properties` before launching JBuilder.
- [107292] A patch is available for JSPs running in Japanese patch. See http://www.ingrid.org/jajakarta.
- [109510] French keyboard under Solaris and Linux only: Shortcut keys for setting numbered bookmarks (Ctrl + Shift + "#") and jumping to numbered bookmarks (Ctrl + "#") don't work. Use the keymap editor to customize the keymapping.
- [124670] When using the ClearCase integration: if a filename contains extended characters, the file content is cleared out after an un-checkout operation.
- [125556] The KeyPressed event is not called when accented characters are used from the French keyboard.
- [130987] RedHat 7.2 with KDE: Cannot key in the reverse single quote (single grave accent) '`' and the circumflex accent '^' in a Java application using a German keyboard layout.
- [133891] Entering the Euro symbol, "€", as part of the directory path for JBuilder in the installer will cause JBuilder to throw an exception. The Euro character displays correctly in the JBuilder text box of the installer. However, when JBuilder is installed, the directory name will have a question mark in place of the Euro character.
  Workaround: Do not use spaces or currency symbols in the path names when installing JBuilder.
- [148006] Linux only: Stopping XIM causes JBuilder to hang.
- [154222] The license file might be displayed incorrectly in some locales. A space character is displayed in places where a grave accent or smart quote should appear.
- [156594] JBuilder opens a JSP file as an ISO-8859-1 encoded file when the file does not contain the value "charset=Shift_JIS" in its header.
  Workaround: The JSP 1.2 specification is followed strictly in JBuilder. In JBuilder 2005, we provide a way to override the default JSP encoding. You can add the system property `"jsp.default.encoding.override"` to specify the encoding they want in their specific applications. For example, add the following line to the `jbuilder.config` file:

      vmparam -Djsp.default.encoding.override=Shift_JIS

[ 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:

- FAQ's: http://bdn.borland.com/all/0,1435,c|3|10,00.html
- TI's: http://bdn.borland.com/all/0,1435,c|3|9,00.html

[ top ]