Включение поддержки процедур Java

Изначально поддержка функций Java в Informix отключена.

Для того, чтобы определить, поддерживает ли данная инсталляция Informix функции Java в принципе, нужно просмотреть список расширений экземпляра СУБД и найти каталог

	$INFORMIXDIR/extend/krakatoa

Если такой каталог присутствует - поддержка возможна.

Создание пространства smart blob

Для размещения зарегистрированных библиотек Java в базе данных необходимо иметь в СУБД как минимум одно пространство smart blob, в котором достаточно свободного места. Если такого пространства еще нет, его необходимо создать, а затем указать имя этого пространства в файле onconfig в параметре конфигурации SBSPACENAME, после чего перезапустить экземпляр СУБД.

	SBSPACENAME sbs1

Для тестирования достаточно создать smart blobspace размером в несколько сотен мегабайт. В дальнейшем при необходимости smart blobspace можно расширить, как и любое другое пространство.

Добавление виртуальных процессоров Java

Фрагмент файла onconfig, ответственный за поддержку Java, изначально выглядит так:

	#VPCLASS        jvp,num=1
	JVPPROPFILE     $INFORMIXDIR/extend/krakatoa/.jvpprops
	JVPLOGFILE      $INFORMIXDIR/tmp/jvp.log
	#JVPARGS        -verbose:jni
	JVPARGS         -Dcom.ibm.tools.attach.enable=no
	#JVPCLASSPATH   $INFORMIXDIR/extend/krakatoa/krakatoa_g.jar:$INFORMIXDIR/extend/krakatoa/jdbc_g.jar
	JVPCLASSPATH    $INFORMIXDIR/extend/krakatoa/krakatoa.jar:$INFORMIXDIR/extend/krakatoa/jdbc.jar

Хранимые функции Java выполняются специальными виртуальными процессорами. Чтобы включить Java, достаточно раскомментировать выделенную выше строку, после чего перезапустить экземпляр СУБД.

При желании можно отредактировать дополнительные параметры Java

По умолчанию СУБД запускает один виртуальный процессор Java. Можно указать любое разумное число таких виртуальных процессоров, позволяя выполнять несколько Java-функций одновременно. Однако каждая выполняемая функция может использовать только один виртуальный процессор.

Использованная версия Java

Чтобы определить, какая версия Java используется, достаточно выполнить команду

	$INFORMIXDIR/extend/krakatoa/jre/bin/java -version

Например, в Informix 12.10 Linux мы получим

	java version "1.7.0"
	Java(TM) SE Runtime Environment (build pxa6470sr10fp55-20191010_01(SR10 FP55))
	IBM J9 VM (build 2.6, JRE 1.7.0 Linux amd64-64 Compressed References 20191007_429309 (JIT enabled, AOT enabled)
	J9VM - R26_Java726_SR10_20191007_1624_B429309
	JIT  - r11_20191007_429309
	GC   - R26_Java726_SR10_20191007_1624_B429309_CMPRSS
	J9CL - 20191007_429309)
	JCL - 20191004_01 based on Oracle jdk7u241-b08

, в Informix 14.10 Linux

	java version "1.8.0_241"
	Java(TM) SE Runtime Environment (build 8.0.6.5 - pxa6480sr6fp5-20200111_02(SR6 FP5))
	IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20200108_436782 (JIT enabled, AOT enabled)
	OpenJ9   - 7d1059c
	OMR      - d059105
	IBM      - c8aee39)
	JCL - 20200110_01 based on Oracle jdk8u241-b07

, а в Informix 12.10 Solaris

	java version "1.7.0_121"
	Java(TM) 2 Runtime Environment, Standard Edition (IBM build 1.7.0_121-b31 19_Oct_2016_11_23 solaris sparcv9(SR9 FP60))
	Java HotSpot(TM) Server VM (build 24.121-b31, mixed mode)
	IBM Java ORB build orb626-20161012.00
	XML build XL TXE Java 1.0.56
	XML build IBM JAXP 1.4.12
	XML build XML4J 4.5.28

При компиляции функций следует учитывать, что более новые версии функций не могут выполняться на более старой виртуальной машине Java.