Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

DBMS
Product
DBMS
Version
JDBC Driver
Version
JDBC Driver
File
JDBC Driver
License
Included with JS7Comment
H2®1.4.2001.4.200h2-1.4.200.jarMPL 2.0, EPL 1.0noDBMS and JDBC Drivers are Open Source
MariaDB®102.7.2mariadb-java-client-2.7.2.jarLGPLyesDBMS and JDBC Drivers are Open Source
MySQL®5.7, 8.08.xmysql-connector-java-8.x.jarProprietary Licenseno

DBMS is Open Source, JDBC Drivers are not Open Source

The MariaDB® JDBC Driver can be used for access to MySQL® databases

Oracle®12c, 18c, 19c, 21c1921.78ojdbc8-1819.319.0.0.jar
FUTC Licenseyes

DBMS and JDBC Drivers are not Open Source

Use ojdbc8*.jar for Java 8 releases and newerand Java 11
Use ojdbc11*.jar for Java 11 and Java 17

PostgreSQL®10, 11, 12, 13, 14, 1542.24.193postgresql-42.24.193.jarBSD 2-clauseyesDBMS and JDBC Drivers are Open Source
SQL Server®2016, 2017, 20199.x, 10.x, 11.xmssql-jdbc-9.x<version>.jre8.jar
mssql-jdbc-9.x<version>.jre11.jar
mssql-jdbc-9<version>.xjre17.jre15.jar
Proprietary Licenseno

DBMS and JDBC Drivers are not Open Source
Use mssql*.jre11.jar for Java 11 - 14
    (JDBC Driver version 7.2 to 9.x)
Use mssql*.jre15jre17.jar for Java 15 17
    (JDBC Driver version 10.2 and newer)


In most situations it is technically possible to operate JS7 with newer versions of a DBMS or JDBC Driver if the version is actively supported by the DBMS vendor. Users frequently ask if JS7 is compatible with newer versions of a DBMS or JDBC Driver. It's the wrong question and your DBA should know the answer. Consider the following example for Oracle® that similarly applies to other DBMSs:

...

  • Hibernate configuration files are used in an XML format.
  • JS7 - JOC Cockpit Installation On Premises
    • During installation the relevant hibernate configuration file is created and can be manually updated later on.
    • After installation of the JOC Cockpit the hibernate.cfg.xml Hibernate configuration file is available in
      • Unix
        • /var/sos-berlin.com/js7/joc/jetty_base/resources/joc
      • Windows
        • C:\ProgramData\sos-berlin.com\js7\joc\jetty_base\resources\joc
      • A different location for the configuration directory can be specified during installation of the JOC Cockpit.
  • JS7 - JOC Cockpit Installation for Docker Containers
    • The JOC Cockpit ships preinstalled from a Docker® imagecontainer image.
    • It is therefore recommended that users:
      • download/copy one of the Hibernate configuration files listed below to:
        • /var/sos-berlin.com/js7/joc/jetty_base/resources/joc
      • adjust changes to reflect their database connection. For use with H2® you can use the below sample without changes.
  • By default the Hikari Connection Pool is used.
  • Consider that XML requires special characters to be used with escape characters, for example a password in the Hibernate configuration file that includes the character & is written as &amp;. This applies to any values of XML elements and attributes in Hibernate configuration files.
    • Wrong: <property name="hibernate.connection.password">sec&ret</property>
    • Right: <property name="hibernate.connection.password">sec&amp;ret</property>

...

Code Block
languagexml
titleHibernate configuration file for MySQL® database
collapsetrue
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">org.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.password">jobscheduler</property>
  <property name="hibernate.connection.url">jdbc:mysql://mysqlsrv:3306/jobscheduler</property>
  <property name="hibernate.connection.username">jobscheduler</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
  <property name="hibernate.show_sql">false</property>
  <property name="hibernate.connection.autocommit">false</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
  <property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
  <property name="hibernate.hikari.maximumPoolSize">10</property>
 </session-factory>
</hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
  <property name="hibernate.hikari.maximumPoolSize">10</property>
 </session-factory>
</hibernate-configuration>

Explanation:

-configuration>

Explanation:

  • The example uses the MySQL® database server running with hostname mysqlsrv and port 3306.
  • The example applies to use of a MySQL® JDBC Driver. Such drivers do not ship with JS7 as they are not available from open source compatible license. Users can download such drivers from the vendor's site.
  • For use with MySQL® databases the MariaDB® JDBC Driver can be used that ships with JS7. The class name for this driver is org.mariadb.jdbc.Driver, see example for MariaDB®The example uses the MySQL® database server running with hostname mysqlsrv and port 3306.

Hibernate Configuration for Oracle®

...

Code Block
languagexml
titleHibernate configuration file for SQL Server® database
collapsetrue
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
  <property name="hibernate.connection.password">jobscheduler</property>
  <property name="hibernate.connection.url">jdbc:sqlserver://sqlserversrv:1433;sendStringParametersAsUnicode=falsetrue;selectMethod=cursor;databaseName=jobscheduler</property>
  <property name="hibernate.connection.username">jobscheduler</property>
  <property name="hibernate.dialect">org.hibernate.dialect.SQLServer2005Dialect</property>
  <property name="hibernate.show_sql">false</property>
  <property name="hibernate.connection.autocommit">false</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
  <property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
  <property name="hibernate.hikari.maximumPoolSize">10</property>
 </session-factory>
</hibernate-configuration>

...

  • Note that the JDBC Driver for SQL Server® has to be downloaded separately as it does not ship with JS7.
  • The example uses the SQL Server® database server running with hostname sqlserversrv and port 1433.
  • Note that use of the above parameters with the JDBC URL is required: sendStringParametersAsUnicode=falsetrue;selectMethod=cursor
  • For Windows environments, access to SQL Server can be configured to use integrated security, i.e. using the account that the JOC Cockpit Windows Service is operated with. 
    • Specify empty values for the <property name="hibernate.connection.username"> and <property name="hibernate.connection.password"> elements.
    • Add to the JDBC URL: integratedSecurity=true
    • The account used for the JOC Cockpit Windows Service has to be configured with SQL Server® to allow access to the database.
    • The JDBC Driver distribution usually ships with a library for authentication purposes with a name such as sql_jdbc.dll or  mssql-jdbc_auth-9.2.1.x64.dll or similar. This library should be added to a location that is specified with the Windows PATH environment variable for the JOC Cockpit Windows Service or simply stored in the C:\Windows\System32 directory or in the bin directory of the Java JDK/JRE in use.

...

Consider applying changes to your Hibernate configuration file that reflect change of the JDBC Driver. You will find the hibernate.cfg.xm Hibernate xml Hibernate configuration file in the JOC Cockpit configuration directory:

...

Restart the JOC Cockpit to apply your changes.

Adding a JDBC Driver to a

...

Container installation

When using the JOC Cockpit Docker® image container image then technically no installer is included that allows to specify the JDBC Driver to be used. Instead, images are preinstalled. In addition, there is no access to the container's file system before running the container which makes it impossible to add or replace a JDBC Driver before JOC Cockpit is started.

...

  • /var/sos-berlin.com/js7/joc/resources/joc/lib
  • The /var/sos-berlin.com/js7/joc/resources/joc directory directory is typically mounted to a Docker volume a volume when running the container - for details see the JS7 - JOC Cockpit Installation for Docker Containers article. If the lib sub-directory does not exist then you can create it to store the JDBC Driver (*.jar) file.

...