The content below is for Apache Syncope <= 1.2 - for later versions check the "System Administration" chapter of the Reference Guide. |
Once you have created your project, you can start adapting it to your own needs and requirements.
Currently, Syncope needs three base directories to be defined:
Bundles directory should only contain connector bundle JAR files. The presence of any other file might cause the unavailability of any connector bundle in Apache Syncope. |
For example, you can create directories as follows:
$ mkdir /opt/syncope $ mkdir /opt/syncope/bundles $ mkdir /opt/syncope/log $ mkdir /opt/syncope/conf |
Internal storage is a database where all information and configurations are stored.
You may want to setup some default content to be loaded on internal storage upon schema creation: for this you need to edit
core/src/main/resources/content.xml |
.
Please note that Syncope core will populate internal storage with provided content only if the corresponding database is empty, i.e. does not contain any table or view.
Depending on your DBMS, you will need to change your project setup accordingly; modify the content of
core/src/main/resources/persistence.properties |
as indicated in the following.
jpa.driverClassName=org.postgresql.Driver jpa.url=jdbc:postgresql://localhost:5432/syncope jpa.username=syncope jpa.password=syncope jpa.dialect=org.apache.openjpa.jdbc.sql.PostgresDictionary jpa.pool.validationQuery=SELECT 1 #note: other connection pool settings can also be configured here, see persistenceContext.xml quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate quartz.sql=tables_postgres.sql audit.sql=audit.sql database.schema= |
This assumes that you have a PostgreSQL instance running on localhost, listening on its default port 5432 with a database syncope fully accessible by user syncope with password syncope.
jpa.driverClassName=com.mysql.jdbc.Driver jpa.url=jdbc:mysql://localhost:3306/syncope?characterEncoding=UTF-8 jpa.username=syncope jpa.password=syncope jpa.dialect=org.apache.openjpa.jdbc.sql.MySQLDictionary jpa.pool.validationQuery=SELECT 1 #note: other connection pool settings can also be configured here, see persistenceContext.xml quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate quartz.sql=tables_mysql_innodb.sql audit.sql=audit_mysql_innodb.sql database.schema= |
This assumes that you have a MySQL instance running on localhost, listening on its default port 3306 with a database syncope fully accessible by user syncope with password syncope.
It also assumes that the InnoDB engine is enabled in your MySQL instance - if this is not the case, then change the value for 'quartz.sql' to
quartz.sql=tables_mysql.sql |
jpa.driverClassName=org.mariadb.jdbc.Driver jpa.url=jdbc:mariadb://localhost:3306/syncope?characterEncoding=UTF-8 jpa.username=syncope jpa.password=syncope jpa.dialect=org.apache.openjpa.jdbc.sql.MariaDBDictionary jpa.pool.validationQuery=SELECT 1 #note: other connection pool settings can also be configured here, see persistenceContext.xml quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate quartz.sql=tables_mariadb.sql audit.sql=audit.sql database.schema= |
This assumes that you have a MariaDB instance running on localhost, listening on its default port 3306 with a database syncope fully accessible by user syncope with password syncope.
jpa.driverClassName=oracle.jdbc.OracleDriver jpa.url=jdbc:oracle:thin:@localhost:1521:orcl jpa.username=syncope jpa.password=syncope jpa.dialect=org.apache.openjpa.jdbc.sql.OracleDictionary jpa.pool.validationQuery=SELECT 1 FROM DUAL #note: other connection pool settings can also be configured here, see persistenceContext.xml quartz.jobstore=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate quartz.sql=tables_oracle.sql audit.sql=audit_oracle.sql database.schema=SYNCOPE |
This assumes that you have an Oracle instance running on localhost, listening on its default port 1521 with a database syncope under tablespace SYNCOPE fully accessible by user syncope with password syncope.
You will also need to
create directory
core/src/main/resources/META-INF |
rename it to
orm.xml |
and copy it under the directory created above
jpa.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver jpa.url=jdbc:sqlserver://localhost:1344;database=syncope;selectMethod=cursor;sendStringParametersAsUnicode=false jpa.username=syncope jpa.password=syncope jpa.dialect=org.apache.openjpa.jdbc.sql.SQLServerDictionary jpa.pool.validationQuery=SELECT 1 #note: other connection pool settings can also be configured here, see persistenceContext.xml quartz.jobstore=org.quartz.impl.jdbcjobstore.MSSQLDelegate quartz.sql=tables_sqlServer.sql audit.sql=audit_sqlserver.sql database.schema= |
This assumes that you have an SQL Server instance running on localhost, listening on its default port 1344 with a database syncope fully accessible by user syncope with password syncope.
You will also need to
create directory
core/src/main/resources/META-INF |
rename it to
orm.xml |
and copy it under the directory created above
This assumes that you have got Apache Tomcat 7 installed in directory $CATALINA_HOME.
If you have installed Apache Tomcat 7 via Debian / Ubuntu package, you will also need to
|
Create $CATALINA_HOME/bin/setenv.sh with content (keep everything on a single line).
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server \ -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m \ -XX:MaxPermSize=256m -XX:+DisableExplicitGC" |
Create %CATALINA_HOME%\bin\setenv.bat with content (keep everything on a single line).
set JAVA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC |
context.xmlUncomment <Manager pathname="" /> in $CATALINA_HOME/conf/context.xml.
Optionally, define a datasource for internal storage (following example is for MySQL): please check that the connection parameters are same as configured above.
<Resource name="jdbc/syncopeDataSource" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" testWhileIdle="true"
testOnBorrow="true" testOnReturn="true" validationQuery="SELECT 1" validationInterval="30000"
maxActive="100" minIdle="2" maxWait="10000" initialSize="2" removeAbandonedTimeout="20"
removeAbandoned="true" logAbandoned="true" suspectTimeout="20"
timeBetweenEvictionRunsMillis="5000" minEvictableIdleTimeMillis="5000"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
username="syncope" password="syncope" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/syncope?characterEncoding=UTF-8"/>
|
Be sure to put the JDBC driver JAR file under $CATALINA_HOME/lib for the Datasource you have defined above.
glassfish-web.xmlWhen using a datasource for internal storage, be sure to add
<resource-ref>
<res-ref-name>jdbc/syncopeDataSource</res-ref-name>
<jndi-name>jdbc/syncopeDataSource</jndi-name>
</resource-ref>
|
assuming that your Glassfish instance provides a datasource named jdbc/syncopeDataSource.
right after </context-root> in core/src/main/webapp/WEB-INF/glassfish-web.xml.
Content of this paragraph applies to Apache Syncope < 1.2.0 |
Download this file, copy it under core/src/main/resources/ and replace
<entry key="openjpa.MetaDataFactory" value="org.apache.syncope.core.persistence.openjpa.JBossPersistenceMappingFactory(URLs=vfs:${project.build.directory}/cargo/configurations/jboss71x/deployments/${project.build.finalName}.war/WEB-INF/classes/, Resources=META-INF/orm.xml)"/> |
with
<entry key="openjpa.MetaDataFactory" value="org.apache.syncope.core.persistence.openjpa.JBossPersistenceMappingFactory(URLs=vfs:/content/${project.build.finalName}.war/WEB-INF/classes/, Resources=META-INF/orm.xml)"/> |
When core application starts up you will see many yet harmless error messages and stacktraces: this is due to an internal mechanism that looks for custom implementations of standard Apache Syncope interfaces.
If you want to remove such messages you can provide an override of the org.apache.syncope.core.init.ImplementationClassNamesLoader class: see an example here.
| Content of this paragraph applies to Apache Syncope >= 1.2.X |
Download this file, copy it under core/src/main/resources/ and replace
<entry key="openjpa.MetaDataFactory" value="jpa(URLs=vfs:${project.build.directory}/cargo/configurations/jboss71x/deployments/${project.build.finalName}.war/WEB-INF/classes/, Resources=META-INF/orm.xml)"/>
|
with
<entry key="openjpa.MetaDataFactory" value="jpa(URLs=vfs:/content/${project.build.finalName}.war/WEB-INF/classes/, Resources=META-INF/orm.xml)"/>
|
When core application starts up you will see many yet harmless error messages and stacktraces: this is due to an internal mechanism that looks for custom implementations of standard Apache Syncope interfaces.
If you want to remove such messages you can provide an override of the org.apache.syncope.core.init.ImplementationClassNamesLoader class: see an example here.
When using a DataSource, a few additional adjustments are needed.
web.xmlChange
<resource-ref>
<res-ref-name>jdbc/syncopeDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
|
to
<resource-ref>
<res-ref-name>jdbc/syncopeDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<lookup-name>java:/syncopeDataSource</lookup-name>
</resource-ref>
|
assuming that you have defined a DataSource with JNDI name 'java:/syncopeDataSource' in JBoss configuration.
jboss-deployment-structureAdd
<module name="com.mysql"/> |
right before
</dependencies> |
assuming that 'com.mysql' is the name of the JBoss module you have deployed for your JDBC Driver (MySQL in this case).
web.xmlChange
classpath*:/*Context.xml |
to
/WEB-INF/classes/*Context.xml |
at the beginning of core/src/main/webapp/WEB-INF/web.xml.
weblogic.xmlWhen using a datasource for internal storage, be sure to add
<resource-description>
<jndi-name>syncopeDataSource</jndi-name>
<res-ref-name>jdbc/syncopeDataSource</res-ref-name>
</resource-description>
|
assuming that your WebLogic instance provides a datasource named syncopeDataSource.
before </weblogic-web-app> in core/src/main/webapp/WEB-INF/weblogic.xml.
Syncope, when not finding a datasource called jdbc/syncopeDataSource, will connect to internal storage by instantiating a new connection upon request: this is of course strongly discouraged for any production environment.
When using a container-managed datasource, be sure to uncomment the <resource-ref ... /> element in core/src/main/webapp/WEB-INF/web.xml.
Modify console/src/main/resources/console.properties so that provided properties reflects the scheme, hostname and port number where your JEE container is running and the URL context where Syncope core will be deployed.
For example, when running your JEE container on port 9080, you should have
scheme=http host=localhost port=8080 rootPath=/syncope/rest/ |
Assuming that you have created the two deployment directories defined above, just run
mvn clean package -Dconf.directory=/opt/syncope/conf -Dbundles.directory=/opt/syncope/bundles -Dlog.directory=/opt/syncope/log |
At this point you can deploy core/target/syncope.war and console/target/syncope-console.war to your JEE container.