{"id":30613975,"url":"https://github.com/gdfreitasdev/library-api","last_synced_at":"2025-08-30T06:49:36.493Z","repository":{"id":78717995,"uuid":"127637055","full_name":"gdfreitasdev/library-api","owner":"gdfreitasdev","description":"Projeto de livraria em uma stack Java EE","archived":false,"fork":false,"pushed_at":"2018-08-10T04:07:14.000Z","size":249,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-07T01:12:21.152Z","etag":null,"topics":["arquillian","bean","beanvalidation","cdi","ejb","gson","java","javaee7","jaxrs","jms","jpa","junit","postgresql","wildfly"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gdfreitasdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-04-01T14:33:26.000Z","updated_at":"2023-03-04T04:06:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"fcf89cb3-b49e-4c41-8f67-24de2b8dcf2e","html_url":"https://github.com/gdfreitasdev/library-api","commit_stats":null,"previous_names":["gdfreitasdev/library-api"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/gdfreitasdev/library-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdfreitasdev%2Flibrary-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdfreitasdev%2Flibrary-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdfreitasdev%2Flibrary-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdfreitasdev%2Flibrary-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gdfreitasdev","download_url":"https://codeload.github.com/gdfreitasdev/library-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdfreitasdev%2Flibrary-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272815815,"owners_count":24997661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arquillian","bean","beanvalidation","cdi","ejb","gson","java","javaee7","jaxrs","jms","jpa","junit","postgresql","wildfly"],"created_at":"2025-08-30T06:49:35.416Z","updated_at":"2025-08-30T06:49:36.446Z","avatar_url":"https://github.com/gdfreitasdev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aplicação Java EE\n\nEste repositório contém um projeto baseado em um agregado de tecnologias com o objetivo de estudar e praticar os recursos abordados;\n\nO projeto consiste em uma api para gerênciamento de uma biblioteca, com cadastro de autores, livros, categorias de livros, e cadastro de usuários. Possui autenticação para cada recurso disponibilizado conforme os papéis de cada usuário, controle de expiração do tempo de aluguel de cada livro, auditoria de ações realizadas em alguns recursos, etc.\n\n## Tecnologias abordadas\n\n- Java EE\n- JPA 2.1\n- Bean Validation 1.1\n- JMS 2.0\n- EJB 3.2\n- CDI 1.1\n- JAX-RS 2.0\n- Recursos do Java 8 (lambda expressions, Date\u0026Time API, streams, etc)\n- Gson, JUnit, Mockito and Hamcrest.\n- Arquillian\n- Wildfly como servidor de aplicação _(Utilizado para Desenvolvimento Wildfly-8.2.0.Final)_\n- PostgreSQL\n- HSQLDB/H2 para testes unitários e de integração\n\n## Configurações\n\n- Executar o servidor `$JBOSS_HOME/bin/standalone.bat -c=standalone-full.xml`\n\n### Datasource\n\n```xml\n\u003csubsystem xmlns=\"urn:jboss:domain:datasources:2.0\"\u003e\n   \u003cdatasources\u003e\n      ...\n      \u003cdatasource jndi-name=\"java:jboss/datasources/library\" pool-name=\"library-pool\" enabled=\"true\" use-java-context=\"true\"\u003e\n         \u003cconnection-url\u003ejdbc:postgresql://localhost/library\u003c/connection-url\u003e\n         \u003cdriver\u003epostgres\u003c/driver\u003e\n         \u003ctransaction-isolation\u003eTRANSACTION_READ_COMMITTED\u003c/transaction-isolation\u003e\n         \u003cpool\u003e\n            \u003cmin-pool-size\u003e5\u003c/min-pool-size\u003e\n            \u003cmax-pool-size\u003e30\u003c/max-pool-size\u003e\n            \u003cprefill\u003etrue\u003c/prefill\u003e\n            \u003cuse-strict-min\u003efalse\u003c/use-strict-min\u003e\n            \u003cflush-strategy\u003eFailingConnectionOnly\u003c/flush-strategy\u003e\n         \u003c/pool\u003e\n         \u003csecurity\u003e\n            \u003cuser-name\u003epostgres\u003c/user-name\u003e\n            \u003cpassword\u003epostgres\u003c/password\u003e\n         \u003c/security\u003e\n         \u003cstatement\u003e\n            \u003cprepared-statement-cache-size\u003e32\u003c/prepared-statement-cache-size\u003e\n         \u003c/statement\u003e\n      \u003c/datasource\u003e\n   \u003c/datasources\u003e\n   ...\n\u003c/subsystem\u003e\n```\n\n### Drivers\n\n- É necessário [baixar o driver do postgres](https://jdbc.postgresql.org/download.html) e adicioná-lo aos drivers do Wildfly.\n   1. Criar pasta `postgres` e `postgres.main` em `JBOSS_HOME/modules/system/layers/base/org`;\n   2. Adicionar o jar baixado na pasta main;\n   3. Criar arquivo `module.xml` conforme abaixo;\n\nmodule.xml\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n   \u003cmodule xmlns=\"urn:jboss:module:1.1\" name=\"org.postgres\"\u003e\n   \u003cresources\u003e\n      \u003cresource-root path=\"postgresql-42.2.2.jar\"/\u003e\n   \u003c/resources\u003e\n   \u003cdependencies\u003e\n      \u003cmodule name=\"javax.api\"/\u003e\n   \u003c/dependencies\u003e\n\u003c/module\u003e\n```\n\nstandalone-full.xml\n\n```xml\n\u003csubsystem xmlns=\"urn:jboss:domain:datasources:2.0\"\u003e\n   \u003cdatasources\u003e\n      ...\n      \u003cdriver name=\"postgres\" module=\"org.postgres\"\u003e\n         \u003cxa-datasource-class\u003eorg.postgresql.Driver\u003c/xa-datasource-class\u003e\n      \u003c/driver\u003e\n   \u003c/datasources\u003e\n   ...\n\u003c/subsystem\u003e\n```\n\n### Filtro de autenticação\n\nstandalone-full.xml\n\n```xml\n \u003csubsystem xmlns=\"urn:jboss:domain:security:1.2\"\u003e\n   \u003csecurity-domains\u003e\n      ...\n      \u003csecurity-domain name=\"library\" cache-type=\"default\"\u003e\n         \u003cauthentication\u003e\n            \u003clogin-module code=\"Database\" flag=\"required\"\u003e\n                  \u003cmodule-option name=\"dsJndiName\" value=\"java:jboss/datasources/library\"/\u003e\n                  \u003cmodule-option name=\"principalsQuery\" value=\"select password from lib_user where email=?\"/\u003e\n                  \u003cmodule-option name=\"rolesQuery\" value=\"select role, 'Roles' from lib_user_role ur inner join lib_user u on u.id = ur.user_id where u.email=?\"/\u003e\n                  \u003cmodule-option name=\"hashAlgorithm\" value=\"SHA-256\"/\u003e\n                  \u003cmodule-option name=\"hashEncoding\" value=\"BASE64\"/\u003e\n                  \u003cmodule-option name=\"hashStorePassword\" value=\"false\"/\u003e\n                  \u003cmodule-option name=\"hashUserPassword\" value=\"true\"/\u003e\n            \u003c/login-module\u003e\n         \u003c/authentication\u003e\n      \u003c/security-domain\u003e\n      ...\n   \u003c/security-domains\u003e\n\u003c/subsystem\u003e\n```\n\n### Logging\n```xml\n\u003csubsystem xmlns=\"urn:jboss:domain:logging:2.0\"\u003e\n    ...\n    \u003cconsole-handler name=\"CONSOLE\"\u003e\n        \u003clevel name=\"DEBUG\"/\u003e\n        \u003cformatter\u003e\n            \u003cnamed-formatter name=\"COLOR-PATTERN\"/\u003e\n        \u003c/formatter\u003e\n    \u003c/console-handler\u003e\n    ...\n     \u003clogger category=\"org.jboss.as.config\"\u003e\n        \u003clevel name=\"INFO\"/\u003e\n    \u003c/logger\u003e\n    \u003clogger category=\"com.library.app\"\u003e\n        \u003clevel name=\"DEBUG\"/\u003e\n    \u003c/logger\u003e\n    ...\n\u003c/subsystem\u003e\n```\n\n### JMS\n```xml\n\u003cjms-destinations\u003e\n    ...\n    \u003cjms-queue name=\"Orders\"\u003e\n        \u003centry name=\"java:/jms/queue/Orders\"/\u003e\n    \u003c/jms-queue\u003e\n    ...\n\u003c/jms-destinations\u003e\n```\n\n## Referências\n\n- [Curso: Build an application from scratch: JEE 7, Java 8 and Wildfly](https://www.udemy.com/build-an-application-from-scratch-jee-7-java-8-and-wildfly)\n\n- [Exposição de Recursos da API @ Postman - Documenter](https://documenter.getpostman.com/view/1862571/RWTkQyRZ)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdfreitasdev%2Flibrary-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgdfreitasdev%2Flibrary-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdfreitasdev%2Flibrary-api/lists"}