Сбой ping пула подключения к консоли администратора Glassfish 4.0

С этой ошибкой: Ошибка пула соединений Ping для postgreSQLPool. Соединение не может быть выделено, потому что: FATAL: база данных "/localhost:5432/mydatabase" не существует

Конфигурация пула следующая:

Pool Name: postgreSQLPool 
Resource Type: javax.sql.ConnectionPoolDataSource
Datasource Classname: org.postgresql.ds.PGConnectionPoolDataSource
portNumber: 5432
databaseName: myDatabase
datasourceName: myDatabaseDS
roleName: myRole
networkProtocol: jdbc:postgresql:
serverName: //localhost
user: myUser
password: myPassword

Сервер postgresql работает, потому что я могу подключиться к базе данных, используя те же значения подключения, что и выше.

postgresql-9.3-1100.jdbc4.jar находится в $glassfish_home/domains/domain1/lib directory

Любая помощь будет оценена по достоинству,

Дэйв


person user3344455    schedule 23.02.2014    source источник
comment
Эта ошибка база данных /localhost:5432/mydatabase не существует указывает на то, что URL-адрес JDBC создается неправильно. В противном случае сообщение было бы только база данных моя база данных не существует   -  person a_horse_with_no_name    schedule 24.02.2014


Ответы (2)


Ваша конфигурация пула выглядит ерундой. serverName не должно содержать //, а networkProtocol не относится к URL-адресу JDBC.

Ваша конфигурация должна выглядеть примерно так:

Pool Name: postgreSQLPool 
portNumber: 5432
databaseName: myDatabase
datasourceName: myDatabaseDS
roleName: myRole
serverName: localhost
user: myUser
password: myPassword

(Я совсем не уверен, что roleName или datasourceName нужны или правильны, но у меня нет времени на дальнейший просмотр документации для проверки).

Если у вас все еще есть проблемы, попробуйте вернуться к основному источнику данных:

Resource Type: javax.sql.DataSource
Datasource Classname: org.postgresql.ds.PGSimpleDataSource

Для получения информации о типе ресурса см. PGConnectionPoolDataSource, ConnectionPoolDataSource.

Видеть:

person Craig Ringer    schedule 24.02.2014

Здесь:
‹DB_NAME>=myDatabase
‹DB_PORT>=5432
‹DB_USER>=myUser
‹DB_USER_PWD>=myPassword
‹SCHEMA_NAME>=mySchema
‹DB_CONN_POOL>=postgreSQLPool
‹DATA_SRC>=myDatabaseDS

Процедура:
а) Разрешить сервер Glassfish брандмауэра, порт postgres, например, в centos7

#systemctl enable firewalld
#firewall --add-port=<DB_PORT>/tcp --permanent
##systemctl reload firewalld (<---doesn't work)
#firewall-cmd --reload

b) Настройте файл pg_hba.conf для входа пользователя по SSL:

hostnossl        all        all           0.0.0.0/0        reject
hostssl          all        postgres      0.0.0.0/0        reject
hostssl          <DB_NAME>  <USER_NAME>   <IR_ADDR>        md5

c) Создать пользователя, БД, схему и предоставить пользователю привилегии на требуемые объекты, например:

###CREATE USER
sudo -u postgres psql -p <DB_PORT> -d postgres -c "CREATE USER <USER_NAME> ENCRYPTED PASSWORD 'myUser_pwd';"
###CREATE DB
sudo -u postgres psql -p <DB_PORT> -d postgres -c "CREATE DATABASE <DB_NAME> OWNER <USER_NAME> ENCODING 'UTF-8' TABLESPACE service_ts LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' LIMIT -1;"
###CREATE SCHEMA
sudo -u postgres psql -p <DB_PORT> -d <DB_NAME> -c "CREATE SCHEMA "<SCHEMA_NAME>";"
###REVOKE PREVILEGES ON <SCHEMA_NAME> from public
sudo -u postgres psql -p <DB_PORT> -d <DB_NAME> -c "REVOKE ALL ON SCHEMA "<SCHEMA_NAME>" FROM "public";"
###GRANT USAGE ON <SCHEMA_NAME> TO <DB_USER>
sudo -u postgres psql -p <DB_PORT> -d <DB_NAME> -c "GRANT USAGE ON SCHEMA "<SCHEMA_NAME>" TO <USER_NAME>;"
###GRANT PREVILEGES ON TABLES OF <SCHEMA_NAME> TO <DB_USER>
sudo -u postgres psql -p <DB_PORT> -d <DB_NAME> -c "GRANT ALL ON TABLES IN SCHEMA "<SCHEMA_NAME>" TO <USER_NAME>;"
###GRANT PREVILEGES ON SEQUENCES OF <SCHEMA_NAME> TO <DB_USER>
sudo -u postgres psql -p <DB_PORT> -d <DB_NAME> -c "GRANT ALL ON SEQUENCES IN SCHEMA "<SCHEMA_NAME>" TO <USER_NAME>;"
###GRANT PREVILEGES ON FUNCTIONS OF <SCHEMA_NAME> TO <DB_USER>
sudo -u postgres psql -p <DB_PORT> -d <DB_NAME> -c "GRANT ALL ON FUNCTIONS IN SCHEMA "<SCHEMA_NAME>" TO <USER_NAME>;"

d) Перезапустите Postgresql, чтобы изменения конфигурации вступили в силу
e) Поместите правильный файл jar postgresql jdbc4 (соответствующий версии используемого сервера, например, 9.3/9.4/10.1) в папку lib домена. ((т.е.).../glassfish/domains/‹DOMAIN_NAME>/lib)
f) Перезапустите Glassfish, чтобы изменения конфигурации вступили в силу

использовать команды:

asadmin create-jdbc-connection-pool --datasourceClassName "org.postgresql.ds.PGConnectionPoolDataSource" --restype "javax.sql.ConnectionPoolDataSource" --property "ServerName=localhost:PortNumber=<DB_PORT>:DatabaseName=<DB_NAME>:User=<DB_USER>:Password=<DB_USER_PWD>" "<DB_CONN_POOL>"

а также

asadmin create-jdbc-resource --connectionpoolid "<DB_CONN_POOL>" "jdbc/<DATA_SRC>"
person AVA    schedule 16.04.2018