IDS Server
   IDS JDBC Driver
   What's New

   IDS Server Trial
   ODBC Drivers
   Other Tools



   JDBC Quick Start

   About Us
   Our Customers


FAQ - Exception

E1. "SQLException: No suitable driver" thrown by DriverManager.
There can be several causes to this exception:

(a) You did not use the signature "jdbc:ids://" to start off your Connection URL.
(b) The IDS JDBC Driver was not installed properly with the applet. See J7.
(c) In Internet Explorer, you used Class.forName() to register the driver.

For (c), the problem is caused by a bug (see M1) in the Microsoft Java VM which still exist in the final release of Internet Explorer 4.0. The solution is to by pass the DriverManager altogether when creating a JDBC Driver instance:
Driver drv = new j102.sql.IDSDriver();
Connection conn = drv.connect(
    "jdbc:ids://idss.bogus.com/conn?dsn=pubs&uid=sa&pwd=openSesame", null);
E2. "NullPointerException" when connecting to IDS Server.
This exception usually happens when you create a IDS JDBC Driver and Connection instances using the method shown in topic E1. There are two other possible causes for this exception:

(a) Java could not load the driver class j102.sql.IDSDriver. Check your applet setup. See topic J7.
(b) Your Connection URL does not start with "jdbc:ids://"
E3. "NoClassDefFoundError" thrown, and my applet is dead.
If the exception message says, "NoClassDefFoundError: j102.sql.IDSDriver", it means Java could not load the IDS JDBC Driver. Check your applet setup. See topic J7.

If the exception message says, "NoClassDefFoundError: j102.ssl.SSLSocket", it means you are running IDS Server 2.0 Lite, and you should download a newer version of IDS Server.
E4. SQLException: IDS Server: Incompatible IDS JDBC Driver detected...
This indicates that there is a older version of IDS JDBC Driver installed either in the local computer's CLASSPATH or on the Web server that deploys the applet.
E5. java.net.SocketException: No such file or directory
This exception is usually issued by Netscape Navigator or Communicator indicating that you have the wrong IP address and/or port number of the IDS Server when connect() is called.
E6. java.net.SocketException: connect
This exception is usually issued by Internet Explorer or JDK indicating that you have the wrong IP address and/or port number of the IDS Server when connect() is called.

Another common cause is that the IDS Server is not running at all.  While on Windows NT, IDS Server is started automatically as a NT background service after installation, on Windows 98/95 machines, IDS Server must be launched explicitly before running your JDBC applications.
E7. SQLException: [S1000][INTERSOLV][ODBC Informix driver][Informix] Unable to load locale categories.
See topic J8. I can't connect to my Informix data source.
E8. SQLException: [S1000][Microsoft][ODBC SQL Server Driver] Connection is busy with results for another hstmt
This is caused by a SQL Server ODBC Driver limitation such that only one active Statement is allowed on a single Connection.  The solution is to use IDS Server Version 3.0.1 or later and set the ResultSetType to IDSResultSet.TYPE_SCROLL_INSENSITIVE. Please refer to IDS Server User's Guide (Rev 3.0.1 or later) Section 4.6.4 for details.
E9. java.io.EOFException: Unexpected end of socket stream
IDS Server sets a time-out value (default 20 minutes) for all JDBC connections. If your JDBC application worked fine after initially connected to IDS Server but received this exception later, that means your program has not been using the JDBC connection for some time and the IDS Server closes the connection when the time-out expires. This often happens to servlets, because they tend to hold on to the connection for a long time.

The IDS Server setting for this time-out is DefSessionTime in the "idss.ini" file.  Please refer to Section 1.3.3 of the IDS Server User's Guide on how to change this setting.  Another solution is on the client-side have your application periodically call the Connection.getWarnings() method, which causes the IDS Server to restart the time-out counter.

If time-out is not the issue, then IDS JDBC Driver may throws this exception when the protocol between the driver and the IDS Server is broken. This may be caused by a bad network connection that corrupts the data stream.

Also, this exception is thrown when an older version of IDS JDBC Driver connects to IDS Server 2.5 (both Lite and full version). This is a 2.5 bug, because the correct exception should be "Incompatible IDS JDBC Driver ..." (See topic E4). The bug is fixed in Version 3.0 or later.
E10. SQLException: [S1002][Microsoft][ODBC SQL Server Driver] Invalid Descriptor Index
This exception is usually thrown when retrieving a LONGVARCHAR or LONGVARBINARY column using the getXXXStream() method (column size > DefMaxFieldSize of idss.ini). This exception can be avoided by re-ordering your SELECT statement so that the long column is place at the end of the select list.

In the two examples below, assume that picture is the only LONGVARBINARY type column. Then the first SELECT statement can cause this exception, while the second one works fine:

SELECT name, picture, address FROM employee
SELECT name, address, picture FROM employee

If there are two or more long columns in the same select list, place all of them at the end of the select list and make sure that your JDBC program retrieve them in the same order as they appear in the select list.
E11. [S1000][Microsoft][ODBC Access 97 ODBC Driver]General error Unable to open registry key 'DriverId'.
This exception happens when the ODBC data source you setup for your Access database contains certain security protection such that an NT background service like IDS Server is not able to read.  The solution is to run the IDS Server using your own user account (See FAQ-G14).
E12. [HY000][Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
This exception happens when connecting to an ODBC data source with the database file (*.mdb for Access) located on a network drive, and the IDS Server is running as an NT background service using the default 'system' account.  The solution is to run the IDS Server using your own user account (See FAQ-G14).
E13. java.sql.SQLException: java.io.IOException: SSL V3.0 padding error
If you are running an Java applet using the combination of IDS Server 3.5.2 or older, ids.sql.IDSDriver or java2.sql.IDSDriver with SSL enabled, Microsoft Internet Explorer default Java VM, and the DES (40-bit or 56-bit) encryption cipher, then this exception may be caused by a bug in the Microsoft Java VM Just-In-Time (JIT) compiler.

The ids.security.DES class file in IDS Server 3.5.2 or older were compiled using the JDK 1.1 compiler (javac.exe).  All versions of JDK (1.1, 1.2, 1.3), Java Plug-in, Netscape Communicator and Netscape 6 can run the DES encryption using this class file without any problem.  The default Microsoft Java VM of Internet Explorer fails to run it properly and produced incorrect encryption/decryption results that led to this exception.

Starting from IDS Server 3.5.3, most Java classes were compiled using JDK 1.3.  The Microsoft VM seems to be running fine with these class files including ids.security.DES. Therefore, the work-around is either upgrade to 3.5.3 or newer, or download the following patch which replaces the old version of the DES.class file:

    DES Cipher Microsoft VM Patch
E14. java.sql.SQLException: java.io.IOException: SSL Alert(handshake_failure)
This is a public/private key mismatch problem.  Each time idsskey is run, it generates a different pair of IDSServerPKCS.dat (private key) and IDSServerPublicKey.java.  This exception is often caused by running idsskey more than once and having one version of IDSServerPKCS.dat on the server-side while deploying a IDSServerPublicKey.class for the client that was compiled from a different version of IDSServerPublicKey.java.

The simple solution is to find and delete all versions of IDSServerPKCS.dat, IDSServerPublicKey.java and IDSServerPublicKey.class from your file system, JAR and CAB files.  Then run idsskey one last time, compile IDSServerPublicKey.java again into IDSServerPublicKey.class and deploy the class file for the client.

Also, starting from IDS Server 3.5, RSA is the default signature algorithm generated by idsskey if only the modulus size is specified in the parameter.  Before 3.5, the default and only signature algorithm is ElGamal.  If you have a Java program written and ran in 3.2.x or older, then after upgrading to 3.5 ran idsskey again without specifying -dl as parameter, you will get this exception.

Copyright c 1997-2006 IDS Software. All rights reserved.