JDBC Type 2 Driver 3.0 Programmer's Reference (SQL/MX 3.x)

Blocking mode with the JDBC/MX driver causes the whole JVM process to be blocked when an SQL
operation occurs. Nonblocking mode causes the JDBC/MX driver to block only the thread that invokes the
SQL operation and not the whole JVM process. In a multithreaded Java application, the nonblocking
JDBC/MX feature enables the JVM to schedule other threads concurrently while each SQL operation is being
done by a thread.
By default, JDBC/MX uses the nonblocking mode. You can disable nonblocking JDBC/MX in a Java
application by setting the
sqlmx_nowait property to OFF by using the -Djdbcmx.sqlmx_nowait option in the
command line. The syntax is:
-Djdbcmx.sqlmx_nowait={ ON | OFF }
where
ON
specifies nonblocking JDBC/MX. The default is ON.
OFF
specifies process blocking JDBC/MX.
You can also programmatically disable or enable nonblocking JDBC/MX by setting the
sqlmx_nowait property
within the program. Depending on your application, set this property as follows:
In JDBC/MX applications that obtain a JDBC connection by using the DriverManager class, set this
property before the JDBC/MX driver is loaded.
In JDBC/MX applications that obtain a JDBC connection by using JNDI API with the DataSource
interface, set this property before the DataSource object is created.
JDBC connection can now be simultaneously used from multiple threads. Multiple threads working on SQL
statements are allowed to share the same connection. Therefore, single connection context is used across
multiple threads and the operations associated with the connection object are made thread safe.
If you are an application developer writing multithreaded Java applications that use nonblocking JDBC,
follow these recommendations:
Create only one JDBC connection per thread. Applications obtaining multiple JDBC connections in
single thread do not run the SQL/MX operations concurrently and can waste system resources because
each connection requires its own SQL/MX compiler process.
Do not share JDBC Java objects--such as Statement or ResultSet objects--across threads for purposes
other than canceling the SQL operation with the
Cancel() method.
Be aware of the non-preemptive nature of the thread implementation in NonStop Server for Java 4. A
CPU-bound thread runs to its completion without providing an opportunity for the thread scheduler to
schedule a different thread.
If an application is written to share connection across multiple threads, then the connection properties
should not be modified.
Setting Batch Processing for Prepared Statements
You can improve the performance of batch processing when using the PreparedStatement.executeBatch()
method by setting the batchBinding property. When the batchBinding property is set, the statements are
batched in the
executeBatch() operation.
When a JDBC application sets the
batchBinding property, the JDBC/MX driver allocates resources relative to