3.4 KiB
3.4 KiB
Componentes Reutilizáveis - Detalhes
1. Database Connection Pool
📍 Localização
src/main/java/com/mediamanager/database/DatabaseManager.java
🎯 Objetivo
Gerenciar pool de conexões PostgreSQL/Supabase com:
- Padrão Singleton para instância única
- Validação de conexão
- Graceful shutdown
- Thread-safe
💻 Exemplo de Uso
// Obter instância única
DatabaseManager db = DatabaseManager.getInstance();
// Obter conexão
Connection conn = db.getConnection();
// Usar conexão
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM media");
ResultSet rs = stmt.executeQuery();
// Fechar ao terminar
db.close();
📦 Dependências Maven
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.4</version>
</dependency>
🔄 Refatorações Aplicadas
- Padrão Singleton para evitar múltiplas instâncias
- Adição de graceful shutdown com hooks
- Validação de conexão antes de retornar
♻️ Reutilizável em
Qualquer projeto Java que precise conectar com PostgreSQL/Supabase
2. Unix Socket IPC Server
📍 Localização
src/main/java/com/mediamanager/ipc/IPCServer.java
🎯 Objetivo
Servidor IPC usando Unix Domain Sockets com:
- Thread pool para múltiplos clientes
- Graceful shutdown
- Error handling robusto
💻 Exemplo de Uso
// Criar servidor
IPCServer server = new IPCServer("/tmp/myapp.sock");
// Definir handler de mensagens
server.setMessageHandler((client, message) -> {
// Processar mensagem
client.sendResponse("OK");
});
// Iniciar servidor
server.start();
// Shutdown limpo
server.shutdown();
📦 Dependências Maven
<!-- Java 17+ com suporte a Unix Sockets -->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
🔄 Refatorações Aplicadas
- Implementação de thread pool (ExecutorService)
- Graceful shutdown com timeout
- Separação de concerns (server vs handler)
♻️ Reutilizável em
Aplicações desktop que precisam comunicação IPC local eficiente
3. Graceful Shutdown Manager
📍 Localização
src/main/java/com/mediamanager/shutdown/ (ou integrado nos componentes)
🎯 Objetivo
Garantir cleanup ordenado de recursos ao encerrar aplicação:
- Database connections
- Thread pools
- File handles
- Network sockets
💻 Exemplo de Uso
// Registrar shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
System.out.println("Shutting down gracefully...");
// Fechar recursos na ordem correta
ipcServer.shutdown();
databaseManager.close();
System.out.println("Shutdown complete");
}));
🔄 Refatorações Aplicadas
- Centralização de shutdown logic
- Ordenação de cleanup
- Timeout handling
♻️ Reutilizável em
Qualquer aplicação Java que precise gerenciar shutdown de múltiplos recursos
Como Adaptar para Outro Projeto
Passo 1: Copiar Código
Navegue até o arquivo no repositório mediamanager-core e copie.
Passo 2: Ajustar Package
// De:
package com.mediamanager.database;
// Para:
package com.seuprojeto.database;
Passo 3: Configurar
Ajuste variáveis de ambiente, paths, etc. conforme seu projeto.
Passo 4: Testar
Execute testes unitários para garantir funcionamento.