Skip to content

Initial Configuration and Setup

kaushik ganguly edited this page Jul 14, 2020 · 3 revisions

Dependency configuration

  • Download the JAR access-control-1.X-SNAPSHOT-jar-with-dependencies.jar under the lib(create if not present) folder in your Maven Project
  • Configure the POM dependency for Maven Projects
<!-- adding access control API -->
<dependency>
    <groupId>accesscontrol</groupId>
    <artifactId>access-control</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}/lib/access-control-1.X-SNAPSHOT-jar-with-dependencies.jar</systemPath>
</dependency>

<!-- adding Log4J2 dependencies -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.12.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.12.1</version>
</dependency>

<!-- add your choice of JDBC driver -->
 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
            <scope>runtime</scope>
        </dependency>

Properties Configuration

Create an accesscontrol.properties file as a part of your classpath. Below configuration highlights the mandatory options.

#mandatory
accesscontrol.datasource.url=jdbc:mysql://localhost/accesscontrol?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
#mandatory
accesscontrol.datasource.username=root
#mandatory
accesscontrol.datasource.password=****
#mandatory
accesscontrol.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mandatory
accesscontrol.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
accesscontrol.jpa.show-sql=true

#mandatory
#create mode for testing
accesscontrol.jpa.hibernate.ddl-auto=create
#accesscontrol.jpa.hibernate.ddl-auto=update

#none for prod
#accesscontrol.jpa.hibernate.ddl-auto=none

accesscontrol.hibernate.c3p0.min_size=5
accesscontrol.hibernate.c3p0.max_size=20
accesscontrol.hibernate.c3p0.timeout=1800
accesscontrol.hibernate.c3p0.max_statements=50
accesscontrol.hibernate.format_sql=true
accesscontrol.hibernate.connection.autocommit=true

accesscontrol.password.salt=__SALT__
accesscontrol.password.pepper=__PEPPER__
accesscontrol.password.encryptedflag=__IS_ENCRYPTED__
#supports the digest types available in org.apache.commons.codec.digest.MessageDigestAlgorithms
#mandatory
accesscontrol.password.digest=SHA-256

accesscontrol.changelog.enabled=true

accesscontrol.pagination.pagelimit=100
accesscontrol.csv.delimiter=,
accesscontrol.csv.skiplines=1


Optionally you can also use the API to pass the properties in runtime:

Properties properties=new Properties();
properties.put("accesscontrol.datasource.url","jdbc:mysql://localhost/accesscontrol?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
....
....
....

AccessControlService accessControlService=new DefaultAccessControlService(properties);

Logging

Create the Log4j2 properties Create log4j2.properties with the config below

appender.console.type = Console
appender.console.name = LogToConsole
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

appender.file.type = File
appender.file.name = LogToFile
appender.file.fileName=./accesscontrol-console.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

# Rotate log file
#appender.rolling.type = RollingFile
#appender.rolling.name = LogToRollingFile
#appender.rolling.fileName = logs/accesscontrol-console.log
#appender.rolling.filePattern = logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz
#appender.rolling.layout.type = PatternLayout
#appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n
#appender.rolling.policies.type = Policies
#appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
#appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
#appender.rolling.policies.size.size=10MB
#appender.rolling.strategy.type = DefaultRolloverStrategy
#appender.rolling.strategy.max = 10

# Log to console and rolling file
logger.app.name = com.accesscontrol
logger.app.level = info
logger.app.additivity = false
#logger.app.appenderRef.rolling.ref = LogToRollingFile
logger.app.appenderRef.file.ref = LogToFile
logger.app.appenderRef.console.ref = LogToConsole

rootLogger.level = info
rootLogger.appenderRef.stdout.ref = LogToFile
rootLogger.appenderRef.console.ref = LogToConsole

Clone this wiki locally