Glad to hear that it worked, Alessio!
I will add your instructions to the reference guide.
Regards.
On 10/11/2016 10:59, Alessio Maccioni wrote:
Hi Francesco,
The first way you provided it’s the one i used to.
Here is the method explained:
1)Run project into a PostgreSQL instance and let tables populate;
2)Create & edit audit_pgxl.sql (audit folder) & tables_pgxl.sql
(quartz folder) using PostgreSQL defaults (audit.sql &
tables_postgres.sql), then add a “DISTRIBUTE BY REPLICATION;”
statement for each CREATE TABLE instruction;
(see http://files.postgres-xl.org/documentation/sql-createtable.html);
3)Edit core/src/main/resources/domains.xml by adding:
*/<entry key="openjpa.ConnectionFactoryMode" value="managed"/>/*
After
*/<entry key="openjpa.NontransactionalWrite" value="false"/>/*
4)Edit provisioning.properties by this way:
*/quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate/**//*
*/quartz.sql=tables_pgxl.sql/*
5)Edit Master.properties by this way (accordingly to
https://sourceforge.net/p/postgres-xc/xc-wiki/JDBC, you must set
/binaryTransfer=false/ when using JDBC) :
*/Master.driverClassName=org.postgresql.Driver/**//*
*/Master.url=jdbc:postgresql://pgxl-server-ip:port/syncope?binaryTransfer=false?tcpKeepAlive=true/*
*/Master.schema=/*
*/Master.username=syncope/*
*/Master.password=syncope/*
*/Master.databasePlatform=org.apache.openjpa.jdbc.sql.PostgresDictionary/*
*/Master.orm=META-INF/spring-orm.xml/*
*/# note: other connection pool settings can also be configured here,
see DataSource definition/*
*/Master.pool.validationQuery=SELECT 1/*
*/Master.audit.sql=audit_pgxl.sql/*
**
6)Make sure you reflect JDBC url on tomcat/conf/context.conf too, i.e.:
*/<!-- Configure Syncope JDBC DataSource -->/**//*
*/<Resource name="jdbc/syncopeDataSource" auth="Container"/*
*/type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"/*
*/
url="jdbc:postgresql://pgxl-server-ip:port/syncope?binaryTransfer=false?tcpKeepAlive=true"/*
*/username="syncope" password="syncope" maxTotal="20" maxIdle="10"
maxWaitMillis="-1"/>/*
7)Rebuild .war files using */mvn clean verify
-Dconf.directory=/opt/syncope/conf
-Dbundles.directory=/opt/syncope/bundles
-Dlog.directory=/opt/syncope/log/* from Syncope’s root project folder
(make sure you specify your custom directories);
8)Make a pg_dump from PostgreSQL instance using this command:
*/pg_dump -U syncope --column-inserts syncope > export.sql/*
*//*
9)Add “DISTRIBUTE BY REPLICATION;” statement for each CREATE TABLE on
export.sql file too;
10)Import modified export.sql on Postgres-XL instance using this command:
*/psql -U syncope -d syncope -f backup.sql/*
Make sure you got user syncope (with password /syncope/) & db
created, i.e:
*/createuser -P -s --replication syncope/*
*/createdb -O syncope syncope/*
And you set right connection permissions on pg_hba.conf file
(Postgres-XL will trust local connections by default)
11)Finally, Deploy .war files into tomcat/webapps and started Tomcat
instance.
Hope this will be a good starting point for those that want to try
Postgres-XL as DB.
Have a nice day. J
*Alessio Maccioni*
Area Infrastrutture Tecnologiche
Divisione Pubblica Amministrazione e Sanità
[email protected] <mailto:[email protected]>
*Engineering Ingegneria Informatica S.p.A.*
Via Santa Gilla - P.zza L'Unione Sarda - Edificio F, 2° piano
Tel.: +39-0700997013 - VRUC: 606013
www.eng.it <http://www.eng.it/>
*Da:*Francesco Chicchiriccò [mailto:[email protected]]
*Inviato:* martedì 8 novembre 2016 09:22
*A:* [email protected]
*Oggetto:* Re: Using Syncope with Postgres-XL
Hi Alessio,
I was wondering if you made any progress on this, it seems like as
interesting use case.
Regards.
On 25/10/2016 13:28, Francesco Chicchiriccò wrote:
On 25/10/2016 10:32, Alessio Maccioni wrote:
Hello,
We are trying to deploy Syncope v2.0.1 into a Tomcat 8 AS.
Package is built using latest version of Maven.
We are using latest Postgres-XL as DB container via JDBC
connector. All settings are done as reference guide.
Since XL’s “CREATE TABLE” logica is different from classic
Postgres, we need to specify how tables will be distributed
into datanodes, otherwise we get an error during constraints
initialization (Postgres-XL’s distribution table is by HASH
default).
Inspecting .WAR files I just found and edited audit & quartz
SQL instructions, but i can’t find main tables ones.
Can you point me to the right direction?
Hi Alessio,
even if I am personally a bug fun of PostgreSQL, I wasn't aware of
Postgres-XL: it looks definitely cool [1].
If you need to tweak the whole SQL schema creation, you will have to:
1. provide your own SQL script based on [2], save it as
core/src/main/resources/quartz/tables_pgxl.sql, change
provisioning.properties accordingly
2. provide your own SQL script based on [3], place it under
core/src/main/resources/audit/audit_pgxl.sql, add
Master.audit.sql=audit_pgxl.sql to Master.properties
3. pre-populate your DB instance with the full, OpenJPA-generated
SQL schema
You can achieve the last item in two different ways:
1. (simpler) run your project on a plain PostgreSQL instance:
this will create the SQL schema and fill the table with some
values; at that point, dump the DB in a SQL script file,
manually tweak it to work with Postgres-XL, and load it there;
finally, run again your project against Postgres-XL
2. (more involved): configure the OpenJPA Maven plugin in your
core/pom.xml (take [4] as reference) to generate the SQL
schema file for PostgresQL, then manually tweak it to work
with Postgres-XL, and load it there; finally, run your project
against Postgres-XL
HTH
Regards.
[1] http://www.postgres-xl.org/
[2]
https://github.com/apache/syncope/blob/syncope-2.0.1/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
[3]
https://github.com/apache/syncope/blob/syncope-2.0.1/core/persistence-jpa/src/main/resources/audit/audit.sql
[4]
https://github.com/apache/syncope/blob/syncope-2.0.1/core/persistence-jpa/pom.xml#L217-L230
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/