Pessoal to desenvolvendo em java um sistema de automação comercial
de supermercado de pequeno e medio porte(sendo que possui um modo administrativo usando RMI) e estou utilizando o banco de dados mysql so que estava pensando em troca o banco de dados pelo hsqldb ou H2 ou Derby para poder fazer a integração do banco de dados e a aplicação, entao quero algum conselhos, dicas,opnião sobre o assunto.
Olá
Não entendi bem onde entra o RMI. É para comunicação com a base de dados?
Também não entendi na sua arquitetura onde ficará a base de dados. Será uma para cada terminal de caixa?
Já pensou em usar HTTP para fazer a comunicação entre os terminais de caixa e o módulo administrativo usando servlets? Conhece HttpClient? XML-RPC? XStream? JMX?
[]s
Luca
o software e divido em 3 partes - estou usando hibernate
modulo administrativo que gerencia o banco de dados
Contém
Gerenciamento de Produtos
Gerenciamento de Funcionarios
Gerenciamento de Fornecedores
Gerenciamento de Transportadoras
modulo Administrativo Remoto para fazer o gerenciamento de banco de dados remotamente
modulo venda - programa de vendas para os caixas
os caixa fazem um acesso remoto
servlets? Conhece HttpClient? XML-RPC? XStream? JMX?
nao conheço mais estou trabalhando para desktop com swing
posso utiliza algum deles ?
qual vc me recomenda ?
e sobre o banco de dados, qual vc me recomenda ?
Olá
[quote=zerxxx]os caixa fazem um acesso remoto
servlets? Conhece HttpClient? XML-RPC? XStream? JMX?
nao conheço mais estou trabalhando para desktop com swing
posso utiliza algum deles ?
qual vc me recomenda ?
[/quote]
Na verdade quase todos. O fato da camada de apresentação ser Swing não impede que se use servlets.
Você poderia colocar um servlet engine em uma máquina qualquer servidora que pode ser a mesma onde ficará o módulo administrativo.
Você pode usar HttpClient para enviar mensagens XML para o servlet que você vai desenvolver e instalar no servlet engine (tomcat, jetty, etc.). As mensagens podem ser objetos serializados com XStream. Ou outra alternativa seria usar o Apache XML-RPC para que a aplicação de caixa solicite a execução de métodos no servidor.
Todas estas mensagens se iniciam no cliente e o servidor responde. Pode haver casos em que o cliente envie uma confirmação de recebimento sem que o servidor precise responder mas isto já é coisa do seu protocolo de troca de informações entre cliente e a retaguarda.
Para que o servidor se comunique com a aplicação cliente, faça com que de tempos em tempos o cliente envie uma consulta do tipo “sonda” perguntando: ei, tem alguma mensagem para mim?
O JMX você pode usar para reconfigurar alguma coisa no servidor sem precisar tirar o sistema do ar. É uma das facilidades do Java que poucos já se deram conta como é útil.
Quanto ao banco de dados eu não tenho a menor dúvida: entre as opções que você colocou, continue usando o MySQL. Os outros 3 são bancos mais simples. Você poderia avaliar o PostgreSQL e comparar com o MySQL.
A grande vantagem de você fazer a aplicação deste modo é que usando HTTP para se comunicar ao invés de RMI, você com facilidade poderá desenvolver futuros módulos que se comunicarão pela Internet abrindo possibilidades de ferramentas gerenciais que a direção poderá usar de qualquer parte do mundo. E se no futuro houver a adição de filiais já estará pronta a integração.
[]s
Luca
Poxa :shock:
que disse que ao mesmo tempo posso desenvolver uma aplicação web e
desktop.
tem algum tutorial,material que possa me recomenda para mim inicia?
Olá
[quote=zerxxx]Poxa :shock:
que disse que ao mesmo tempo posso desenvolver uma aplicação web e
desktop.[/quote]
Não foi bem assim. O que eu disse é que você pode fazer uma aplicação web com camada de apresentação Swing. O Firefox e o eMule são aplicações deste tipo.
O caminho para estudar deva passar no mínimo por tutoriais sobre:
- protocolo HTTP
- servlets
- uso do tomcat ou do jetty
- URLConnection
- HttpClient
- Serialização
- XStream
- Apache XML-RPC (escrevendo o servidor usando servlet)
- arquiteturas de mensagens
Se achar complexo faça como sabe mas vá aos poucos estudando um modo melhor de fazer.
[]s
Luca
Eu ando usando muito o H2DataBase, na minha opinião é o melhor banco de dados para trabalhar com Java em modo embebido.
Se não tua plicação der para usar o H2DataBase embebido, então nem pensa duas vezes, vai ficar muito mais rápido que com MySql ou outros… basta ver no site do H2DataBase.com o gráfico de desempenho.
E depois na minha opinião já esta uma base de dados bem robusta pelo tempo q ela existe, daqui a pouco tempo ficará melhor ainda, ta evoluindo muito rápido.
Já falei algumas vezes com o Thomas Mueller, que lidera o projeto, e a equipe tem se dedicado muito, até encontrei um bug numa versão beta, que estava usando, e ele me enviou uma classe que resolvia o problema no mesmo dia…
É muito fácil falar com a equipe que desenvolve e dar alguns palpites e respondem muito rápido, tenho o Thomas aqui no meu GoogleTalk, e assim qualquer problema mais grave que tenho falo logo com ele e o problema fica resolvido, mas problemas sérios só tive mesmo 1, e na tal versão beta, portanto tá bem estável, mas o bom é q estão disponíveis para nos dar suporte a qualquer momento, e isto é muito bom num projeto open source, dá para confiarmos mais.
To muito satisfeito com o H2 e já dês das primeiras versões beta se tornou a minha base de dados preferida, e estou sempre a utiliza-la em quase todos os meus projetos.
Vale a pena conferir… 
Quanto a trabalhar com Swing com WebBased por trás, não é uma má idéia, mas não sei até que ponto isto ia ser prático, e o tratamentos dos dados seria muito manual, além de poder ficar muitas breças de segurança…
Agora Luca, me tira uma dúvida, usar XStream ou JMX, quando se pode usar RMI, é preferivel?
Em termos de desempenho RMI não é bem mais rápido?
Só curiosidade que não estou por dentro do XStream e do JMX…
Mas pelo que sei estas APIs fazem o Stream de XML certo? E serialização não é melhor pois fica mais automático e evita os parses de XMLs?
Olá
Já trabalhei com várias aplicações assim, inclusive uma que tem mais de 10 mil clientes on line e nenhum dos seus medos ocorreu. O tratamento de dados é quase igual porque o Swing é só a camada de apresentação. A única diferença é que algumas consistências podem ser feitas no cliente (mas também precisam ser consistidos no servidor)
XStream não tem nada a ver com JMX e pouco a ver com RMI.
O problema do RMI é que na minha opinião a gente deve usar HTTP como protocolo de transporte para passar por firewalls com facilidade.
JMX serve para monitorar e gerenciar a aplicação.
XStream serve para serializar em XML que é muito bom para depurar as mensagens com facilidade. Se as mensagens forem MUITO simples, CSV pode funcionar.
Quanto a serialização pura você precisaria transmitir binário sobre HTTP como um anexo.
E usar Apache XML-RPC é um dos modos mais fáceis que conheço para fazer RPC usando XML sobre HTTP.
[]s
Luca
Valew Luca.
Obrigado ai pelas explicações 
Só uma curiosidade nas aplicações que trabalhaste em Swing com WebBased foi usado alguma API pública para webclient? Ou foi desenvolvido um webclient expecífico? E vc conhece alguma API para webclient boa, que suporte cookies e posts multipart?
Olá
Usamos HttpClient mas não usamos sessions porque a própria aplicação tinha um protocolo de mensagens para garantir a integridade das transações. Não foi necessário usar sessions e posts multipart.
No caso das aplicações em que trabalhei as mensagens trocadas eram XML que encapsulavam o protocolo ISO8583 comum na área financeira. Em alguns casos simples usamos CSV. O importante é ter facilidade de depurar as mensagens porque aqui não pode haver nenhum erro.
[]s
Luca
Valeu Luca pela força !!!
to estudando pra valer