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
- Redis instalado e configurado;
- openjdk15;
- MongoDB instalado.
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