墨墨导读:本文介绍PostgreSQL里如何使用pljava扩展支持java编程。
yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz
./apache-maven-3.6.3/bin/mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /home/postgres/apache-maven-3.6.3
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
PL/Java brings functions, triggers, and types in Java. The 1.5 series supports legacy applications, with PostgreSQL support extending from 13 back to 8.2, and Java from 14 back to 8 (7 or 6 with some extra build effort).
wget https://github.com/tada/pljava/archive/V1_5_7.tar.gz
tar zxvf V1_5_7.tar.gz
cd pljava-1_5_7/
/home/postgres/apache-maven-3.6.3/bin/mvn -Dpgsql.pgconfig=/opt/pg125/bin/pg_config clean install
java -Dpgconfig=/opt/pg125/bin/pg_config \
-jar pljava-packaging/target/pljava-pg12.5-amd64-Linux-gpp.jar
alter database postgres set pljava.libjvm_location='/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib/amd64/server/libjvm.so';
create extension pljava ;
pljava扩展新增了两种pg_language:java和javau
javau只能被超级用户使用
java可以被授权普通用户使用
postgres=# create user java;
CREATE ROLE
postgres=# create schema java authorization java;
CREATE SCHEMA
postgres=# grant USAGE on LANGUAGE java to java;
GRANT
postgres=# grant usage on SCHEMA sqlj to java;
GRANT
psql -p5432 -Ujava postgres
CREATE FUNCTION getsysprop(VARCHAR) RETURNS VARCHAR
AS 'java.lang.System.getProperty'
LANGUAGE java;
postgres=> SELECT getsysprop('user.home');
getsysprop
----------------
/home/postgres
row)
select sqlj.install_jar('file:///opt/test.jar', 'myjar', true);
select sqlj.set_classpath('java', 'myjar');
postgres=> select sqlj.get_classpath('java');
get_classpath
---------------
myjar
(1 row)
CREATE FUNCTION java.hello(varchar) RETURNS varchar
AS 'com.test.Hello.hello'
LANGUAGE java;
postgres=> select hello('PostgreSQL 12');
hello
-----------------------
Hello, PostgreSQL 12!
(1 row)
select sqlj.replace_jar('file:///opt/test.jar', 'myjar', true);
drop function java.hello(varchar);
select sqlj.remove_jar('myjar', true);
联系客服