Tabela de conteúdos

Configurando Edusoft API

Confira abaixo o passo a passo da configuração inicial para utilização do mesmo bem como um resumo das principais funcionalidades.


Pré-Requisitos




Configurando e instalando a api


A api deve ser configurada como os demais serviços dentro da pasta ..\edusoft\servicos\api, e nesta pasta deve haver um arquivo de configurações chamado application.properties com as seguintes configurações.


Exemplo de configuração do arquivo application.properties para banco do tipo MSSQL


Alterar:spring.jpa.properties.hibernate.ejb.interceptor=br.com.edusoft.mentorweb.repository.EduHibernateInterceptor
para:spring.jpa.properties.hibernate.ejb.interceptor=br.com.edusoft.mentorweb.EduHibernateInterceptor

# Spring context path
server.servlet.context-path=/nomeapi
server.port=porta
 
## Spring DATASOURCE - SEC
app.datasource.sec.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
app.datasource.sec.url=jdbc:sqlserver://url:porta;databaseName=database_name_banco_sec
app.datasource.sec.username=username
app.datasource.sec.password=password
app.datasource.sec.hikari.idleTimeout=600000 
app.datasource.sec.hikari.maxLifetime=1800000 
app.datasource.sec.hikari.testOnBorrow=true 
app.datasource.sec.hikari.validationQuery=SELECT 1
app.datasource.sec.hikari.maximumPoolSize=15
app.datasource.sec.hikari.minimumIdle=5
 
 
## Spring DATASOURCE - ICO
app.datasource.ico.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
app.datasource.ico.url=jdbc:sqlserver://url:porta;databaseName=database_name_banco_ico
app.datasource.ico.username=username
app.datasource.ico.password=password
app.datasource.ico.hikari.idleTimeout=600000 
app.datasource.ico.hikari.maxLifetime=1800000 
app.datasource.ico.hikari.testOnBorrow=true 
app.datasource.ico.hikari.validationQuery=SELECT 1
app.datasource.ico.hikari.maximumPoolSize=15
app.datasource.ico.hikari.minimumIdle=5
 
 
## Spring DATASOURCE - FILES
app.datasource.files.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
app.datasource.files.url=jdbc:sqlserver://url:porta;databaseName=database_name_banco_files
app.datasource.files.username=username
app.datasource.files.password=password
app.datasource.files.hikari.idleTimeout=600000 
app.datasource.files.hikari.maxLifetime=1800000 
app.datasource.files.hikari.testOnBorrow=true 
app.datasource.files.hikari.validationQuery=SELECT 1
app.datasource.files.hikari.maximumPoolSize=15
app.datasource.files.hikari.minimumIdle=5
 
 
## Spring DATASOURCE - MSG
app.datasource.msg.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
app.datasource.msg.url=jdbc:sqlserver://url:porta;databaseName=database_name_banco_msg
app.datasource.msg.username=username
app.datasource.msg.password=password
app.datasource.msg.hikari.idleTimeout=600000 
app.datasource.msg.hikari.maxLifetime=1800000 
app.datasource.msg.hikari.testOnBorrow=true 
app.datasource.msg.hikari.validationQuery=SELECT 1
app.datasource.msg.hikari.maximumPoolSize=15
app.datasource.msg.hikari.minimumIdle=5
 
## Spring DATASOURCE - REL
app.datasource.rel.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
app.datasource.rel.url=jdbc:sqlserver://url:porta;databaseName=database_name_banco_rep
app.datasource.rel.username=username
app.datasource.rel.password=password
app.datasource.rel.hikari.idleTimeout=600000
app.datasource.rel.hikari.maxLifetime=1800000
app.datasource.rel.hikari.testOnBorrow=true
app.datasource.rel.hikari.validationQuery=select 1
app.datasource.rel.hikari.maximumPoolSize=15
app.datasource.rel.hikari.minimumIdle=5
 
#Redis - Windowns
spring.cache.type=redis
spring.cache.redis.key-prefix=nome_base_ico
spring.redis.host=url_redis
spring.redis.port=porta_redis
spring.redis.timeout=5000
spring.redis.pool.max_idle=500
spring.redis.pool.min_idle=200
spring.redis.pool.max_active=2000
spring.redis.pool.max_wait=5000
spring.redis.pool.test-on-create=false
spring.redis.pool.test-on-borrow=true
spring.redis.pool.test-on-return=false
spring.redis.pool.test-while-idle=true
 
## File Storage Properties
# All files uploaded through the REST API will be stored in this directory
file.upload-dir=C:\\edusoft\\servicos\\api\\temp
 
java.io.tmpdir=C:\\edusoft\\servicos\\api\\temp
 
# Hibernate configuration
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
​
#RabbitMQ
#spring.rabbitmq.host=localhost
#spring.rabbitmq.port=5672
#spring.rabbitmq.username=guest
#spring.rabbitmq.password=guest
rabbitmq.cadastro.exchange.nome=exchange-mentor-cadastros
rabbitmq.cadastro.chave-rota.nome=
 
#MongoDB Apenas uma base
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=username
spring.data.mongodb.password=password
spring.data.mongodb.database=mentorweb
spring.data.mongodb.auto-index-creation=false
 
#MongoDB com mais de uma base configurada no servidor
#spring.data.mongodb.host=10.0.23.25
#spring.data.mongodb.port=27017
#spring.data.mongodb.authentication-database=nomeclienteMongo
#spring.data.mongodb.username=nomeclienteMongo
#spring.data.mongodb.password=123456
#spring.data.mongodb.database=nomeclienteMongo
#spring.data.mongodb.auto-index-creation=false


Opcionais
Padronizadas as seguintes propriedade com default dentro do código e com isso não é mais necessário declarar elas no application.properties. Somente será necessário se o valor for diferente do padrão.

# Hibernate configuration
spring.jpa.database=default
spring.jpa.properties.hibernate.legacy_limit_handler=true
spring.jpa.properties.hibernate.format_sql=true
spring.hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.ejb.interceptor=br.com.edusoft.mentorweb.EduHibernateInterceptor
 
# Cache JPA
spring.jpa.properties.hibernate.cache.region.factory_class=jcache
spring.jpa.properties.hibernate.javax.cache.provider = org.ehcache.jsr107.EhcacheCachingProvider
spring.jpa.properties.hibernate.javax.cache.missing_cache_strategy=create
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.javax.persistence.sharedCache.mode=ALL
 
#Jackson
spring.jackson.serialization.fail-on-empty-beans=false
spring.jackson.time-zone=Brazil/East
spring.jackson.locale=pt-BR
spring.jackson.date-format=dd/MM/yyyy HH:mm:ss
 
 
#Authentication
jwt.secret=8hYRwIYT1Ga1d9Ul3dMzptjr5ky1Eu8RFq8ZNGcuwGc3cyW9kJsklo9Xwaam9efz
jwt.expires=86400 
#Retoken - 720 horas = 30 dias 
jwt.retoken.expires.horas=720
 
#Spring-boot
spring.main.allow-bean-definition-overriding=true
 
# actuator
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=health,info,metrics,threaddump,mappings,prometheus
 
## MULTIPART (MultipartProperties)
# Enable multipart uploads
spring.servlet.multipart.enabled=true
# Limite após o qual os arquivos são gravados no disco.
spring.servlet.multipart.file-size-threshold=2KB
#Tamanho máximo do arquivo.
spring.servlet.multipart.max-file-size=200MB
# Tamanho máximo do pedido
spring.servlet.multipart.max-request-size=215MB


Exemplo de configuração do arquivo application.properties para banco do tipo ORACLE


Alterar:spring.jpa.properties.hibernate.ejb.interceptor=br.com.edusoft.mentorweb.repository.EduHibernateInterceptor
para:spring.jpa.properties.hibernate.ejb.interceptor=br.com.edusoft.mentorweb.EduHibernateInterceptor

# Spring context path
server.servlet.context-path=/nomeapi
server.port=porta
 
## Spring DATASOURCE - SEC
app.datasource.sec.driverClassName=oracle.jdbc.OracleDriver
app.datasource.sec.url=jdbc:oracle:thin:@url:porta:DB11G
app.datasource.sec.username=username_banco_sec
app.datasource.sec.password=passsword_banco_sec
app.datasource.sec.hikari.idleTimeout=600000 
app.datasource.sec.hikari.maxLifetime=1800000 
app.datasource.sec.hikari.testOnBorrow=true 
app.datasource.sec.hikari.validationQuery=SELECT 1
app.datasource.sec.hikari.maximumPoolSize=15
app.datasource.sec.hikari.minimumIdle=5
 
 
## Spring DATASOURCE - ICO
app.datasource.ico.driverClassName=oracle.jdbc.OracleDriver
app.datasource.ico.url=jdbc:oracle:thin:@url:porta:DB11G
app.datasource.ico.username=username_banco_ico
app.datasource.ico.password=username_banco_sec
app.datasource.ico.hikari.idleTimeout=600000 
app.datasource.ico.hikari.maxLifetime=1800000 
app.datasource.ico.hikari.testOnBorrow=true 
app.datasource.ico.hikari.validationQuery=SELECT 1
app.datasource.ico.hikari.maximumPoolSize=15
app.datasource.ico.hikari.minimumIdle=5
 
## Spring DATASOURCE - FILES
app.datasource.files.driverClassName=oracle.jdbc.OracleDriver
app.datasource.files.url=jdbc:oracle:thin:@url:porta:DB11G
app.datasource.files.username=username_banco_files
app.datasource.files.password=passwrod_banco_files
app.datasource.files.hikari.idleTimeout=600000 
app.datasource.files.hikari.maxLifetime=1800000 
app.datasource.files.hikari.testOnBorrow=true 
app.datasource.files.hikari.validationQuery=SELECT 1
app.datasource.files.hikari.maximumPoolSize=15
app.datasource.files.hikari.minimumIdle=5
 
## Spring DATASOURCE - MSG
app.datasource.msg.driverClassName=oracle.jdbc.OracleDriver
app.datasource.msg.url=jdbc:oracle:thin:@url:porta:DB11G
app.datasource.msg.username=username_banco_msg
app.datasource.msg.password=password_banco_msg
app.datasource.msg.hikari.idleTimeout=600000 
app.datasource.msg.hikari.maxLifetime=1800000 
app.datasource.msg.hikari.testOnBorrow=true 
app.datasource.msg.hikari.validationQuery=SELECT 1
app.datasource.msg.hikari.maximumPoolSize=15
app.datasource.msg.hikari.minimumIdle=5
 
 
## Spring DATASOURCE - REL
app.datasource.rel.driverClassName=oracle.jdbc.OracleDriver
app.datasource.rel.url=jdbc:oracle:thin:@url:porta:DB11G
app.datasource.rel.username=username_banco_rep
app.datasource.rel.password=passwrod_banco_rep
app.datasource.rel.hikari.idleTimeout=600000
app.datasource.rel.hikari.maxLifetime=1800000
app.datasource.rel.hikari.testOnBorrow=true
app.datasource.rel.hikari.validationQuery=SELECT 1
app.datasource.rel.hikari.maximumPoolSize=15
app.datasource.rel.hikari.minimumIdle=5
 
 
#Redis - Windowns
spring.cache.type=redis
spring.cache.redis.key-prefix=username_banco_ico
spring.redis.host=url_redis
spring.redis.port=6379
spring.redis.timeout=5000
spring.redis.pool.max_idle=500
spring.redis.pool.min_idle=200
spring.redis.pool.max_active=2000
spring.redis.pool.max_wait=5000
spring.redis.pool.test-on-create=false
spring.redis.pool.test-on-borrow=true
spring.redis.pool.test-on-return=false
spring.redis.pool.test-while-idle=true
 
## File Storage Properties
# All files uploaded through the REST API will be stored in this directory
file.upload-dir=C:\\edusoft\\servicos\\api\\temp
 
java.io.tmpdir=C:\\edusoft\\servicos\\api\\temp
 
# create and drop tables and sequences, loads import.sql
spring.jpa.hibernate.ddl-auto=create-drop
 
# Hibernate configuration
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.OracleDialect
​
#RabbitMQ
#spring.rabbitmq.host=localhost
#spring.rabbitmq.port=5672
#spring.rabbitmq.username=guest
#spring.rabbitmq.password=guest
rabbitmq.cadastro.exchange.nome=exchange-mentor-cadastros
rabbitmq.cadastro.chave-rota.nome=
 
#MongoDB Apenas uma base
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=username
spring.data.mongodb.password=password
spring.data.mongodb.database=mentorweb
spring.data.mongodb.auto-index-creation=false
 
#MongoDB com mais de uma base configurada no servidor
#spring.data.mongodb.host=10.0.23.25
#spring.data.mongodb.port=27017
#spring.data.mongodb.authentication-database=nomeclienteMongo
#spring.data.mongodb.username=nomeclienteMongo
#spring.data.mongodb.password=123456
#spring.data.mongodb.database=nomeclienteMongo
#spring.data.mongodb.auto-index-creation=false

Opcionais
Padronizadas as seguintes propriedade com default dentro do código e com isso não é mais necessário declarar elas no application.properties. Somente será necessário se o valor for diferente do padrão.

# Hibernate configuration
spring.jpa.database=default
spring.jpa.properties.hibernate.legacy_limit_handler=true  
spring.jpa.properties.hibernate.format_sql=true
spring.hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.ejb.interceptor=br.com.edusoft.mentorweb.repository.EduHibernateInterceptor
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.OracleDialect
 
# Cache JPA
spring.jpa.properties.hibernate.cache.region.factory_class=jcache
spring.jpa.properties.hibernate.javax.cache.provider = org.ehcache.jsr107.EhcacheCachingProvider
spring.jpa.properties.hibernate.javax.cache.missing_cache_strategy=create
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.javax.persistence.sharedCache.mode=ALL
 
#Jackson
spring.jackson.serialization.fail-on-empty-beans=false
spring.jackson.time-zone=Brazil/East
spring.jackson.locale=pt-BR
spring.jackson.date-format=dd/MM/yyyy HH:mm:ss
 
 
#Authentication
jwt.secret=8hYRwIYT1Ga1d9Ul3dMzptjr5ky1Eu8RFq8ZNGcuwGc3cyW9kJsklo9Xwaam9efz
jwt.expires=86400 
#Retoken - 720 horas = 30 dias 
jwt.retoken.expires.horas=720
 
 
#Spring-boot
spring.main.allow-bean-definition-overriding=true
 
# actuator
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=health,info,metrics,threaddump,mappings,prometheus
 
## MULTIPART (MultipartProperties)
# Enable multipart uploads
spring.servlet.multipart.enabled=true
# Limite após o qual os arquivos são gravados no disco.
spring.servlet.multipart.file-size-threshold=2KB
#Tamanho máximo do arquivo.
spring.servlet.multipart.max-file-size=200MB
# Tamanho máximo do pedido
spring.servlet.multipart.max-request-size=215MB