Criar ou não um servidor? Sugestões...  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
Luiz Henrique Coura
Java Ninja
[Avatar]

Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline

Ae pessoal!

Preciso criar um processo q irá servir determinada tarefa pra mim. Considere essa tarefa como sendo um programa em background, isso mesmo, um programa.

Então, eu terei um servidor q irá executar esse processo (imagine esse processo como sendo um prompt do windows), esse programa irá ficar em standalone e o servidor irá esperar até q alguém se conecte e peça para executar algo no processo (prompt do windows). Imagine q o cliente peça para listar o conteúdo de tal diretório.

Qd chegar mais de uma requisição o servidor irá colocar os pedidos em uma fila, esperando até q o processo anterior termine para poder executar o próximo pedido.

Blz!?

Agora, estarei rodando isso na mesma máquina, não vou fazer nenhuma requisição externa, ou seja, de outra máquina. Preciso criar um servidor utilizando TCP pra isso?
O processo q irei rodar é um sistema q a empresa utiliza e já fiz alguns testes e funciona perfeitamente. O problema é q acho q um servidor utilizando TCP... é muita coisa, não é?

Eu poderia criar um programa q assim q executado abra um processo novo(prompt do windows), execute a tarefa e termina o programa, mas isso é muito custoso. Imaginem se vários programas deste estiverem rodando ao mesmo tempo, a máquina explode... rsss

Alguém tem alguma sugestão?

Valeu galera!

"A única pergunta estúpida é aquela que você nunca faz"
Anônimo

Luiz Henrique Coura
[MSN]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Limitando minha resposta apenas na escolha da tecnologia listo os seguintes argumentos:

1. Dependendo da pressa e do quanto lhe pagam faça o mais simples usando scripts.
2. Caso 1 seja simplório demais e inviável, use TCP pois é possível que no futuro as coisas não fiquem na mesma máquina
3. Usando TCP, adote sockets e controle as coisas manualmente.
4. Caso controlar manualmente seja inviável, pense na possibilidade que os processos rodarem como métodos remotos. Neste caso RMI provê tudo o que precisa.
5. Caso precise rodar em rede e os processos devem estar em uma WAN sem VPN, considere a possibilidade de passar os objetos por http. Neste caso RMI não serve e você vai precisar serializar objetos ou usar web services.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
mister__m
Virtual Machine Man
[Avatar]

Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline

Luca wrote:sem VPN, considere a possibilidade de passar os objetos por http. Neste caso RMI não serve e você vai precisar serializar objetos ou usar web services.


É possível usar RMI/HTTP ou até mesmo RMI/HTTPS sem ter que mudar uma linha do código cliente.

Michael Nascimento Santos, aka Mister M

Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m
[WWW]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

mister__m wrote:É possível usar RMI/HTTP ou até mesmo RMI/HTTPS sem ter que mudar uma linha do código cliente.


Certo, muito bem lembrado! A gente fica tão hipnotizado por hypes (web services por exemplo) que as vezes esquece de soluções mais simples para ligar Java com Java.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
Luiz Henrique Coura
Java Ninja
[Avatar]

Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline

Luca wrote:1. Dependendo da pressa e do quanto lhe pagam faça o mais simples usando scripts.
2. Caso 1 seja simplório demais e inviável, use TCP pois é possível que no futuro as coisas não fiquem na mesma máquina
3. Usando TCP, adote sockets e controle as coisas manualmente.
4. Caso controlar manualmente seja inviável, pense na possibilidade que os processos rodarem como métodos remotos. Neste caso RMI provê tudo o que precisa.
5. Caso precise rodar em rede e os processos devem estar em uma WAN sem VPN, considere a possibilidade de passar os objetos por http. Neste caso RMI não serve e você vai precisar serializar objetos ou usar web services.


Realmente Luca, utilizar script não dá. O processo vai exigir manipulação de templates e estou utilizando Velocity pra isso. Tb faço conexão com BD.

A propósito estarei utilizando rede local, nada externo. No máximo poderei fazer requisições de outra máquina, mas isso não está no projeto.

Nunca precisei implementar nada parecido com esse sistema e tudo isso é novo pra mim. Já fiz uns testes com ServerSocket e Socket, funciona legal, mas ainda não testei com RMI. Vou dar uma olhada nisso.

mister__m wrote:É possível usar RMI/HTTP ou até mesmo RMI/HTTPS sem ter que mudar uma linha do código cliente.


Valeu pelas dicas pessoal.

"A única pergunta estúpida é aquela que você nunca faz"
Anônimo

Luiz Henrique Coura
[MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Também tem esse aqui:
http://www.retrogui.com/cgi-bin/wiki_dualrpcserver.pl/DualRpcServer

This message was edited 1 time. Last update was at 13/04/2005 12:16:23


Former LIPE.
[ICQ]
mcampelo
JavaEvangelist
[Avatar]

Membro desde: 29/04/2003 09:36:36
Mensagens: 389
Localização: Rio de Janeiro/Brasil
Offline

Luiz Henrique Coura wrote:
Nunca precisei implementar nada parecido com esse sistema e tudo isso é novo pra mim. Já fiz uns testes com ServerSocket e Socket, funciona legal, mas ainda não testei com RMI. Vou dar uma olhada nisso.


Você não acha que utilizar um Stateless Session Bean é mais simples que trabalhar com Sockets na unha?

Ou que tal você utilizar Servlets? Seu cliente pode chamar o servidor fazendo simples requests HTTP.

Abraços,
Marco Campêlo
Sun Certified Idiot Ideas Specialist
[Email] [Yahoo!] [MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Hum, se você não quer usar um Tomcat (web) ou JBoss (ejb) da vida, e seu servidor é especializado para certos protocolos, você pode tentar algo parecido com o que foi feito com o James (james.apache.org), que foi construído sobre o Avalon ( http://excalibur.apache.org/ ). Não estou recomendando o Avalon, mas a idéia está aí.


[WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Se a infra dai já possui um servidor J2EE 1.3, use JMS com MDBs.
Senão use JMS e um servidor manual (o activemq faz algo do genero, MD POJOs).

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Luiz Henrique Coura
Java Ninja
[Avatar]

Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline

Bom, o sistema q irá processar os dados que o usuário requisitou está na rede interna. Temos servidores Tomcat rodando aplicações, mas está na rede externa e nesta rede não tenho acesso ao programa q preciso e tb aos dados q ficam num sistema de discos internos.

A minha idéia seria criar um servidor simples, por socket na rede interna, somente para prover uma instância de um ou mais processos (que é o nosso sistema) para que esse(s) possam tratar determinada tarefa do usuário e jogar essa informação no BD. Essa requisição não virá de um usuário externo, mas de um usuário(sistema) interno. Acontece q essas requisições podem ser multiplas e preciso organizá-las para q meu sistema possa processá-las.

Poderia instalar um servidor Tomcat na rede interna, mas acho q não tem necessidade. Naverdade já criei o servidor e agora estou gerando as threads q irão processar o trabalho pra mim.

Pretendo estudar RMI para implementar a mesma coisa, mas por enquanto estou sem tempo e pretendo deixar alguma coisa pronta, já operacional.

Andei lendo o q o pessoal passou, mas isso é muito novo pra mim e estou tentando não atropelar as coisas.

Enfim, agradeço a ajuda de vcs e os links. Já marquei esse topic no meu bookmark. Ainda tenho muito q estudar!

Valeu galera!

"A única pergunta estúpida é aquela que você nunca faz"
Anônimo

Luiz Henrique Coura
[MSN]
mcampelo
JavaEvangelist
[Avatar]

Membro desde: 29/04/2003 09:36:36
Mensagens: 389
Localização: Rio de Janeiro/Brasil
Offline

Luiz Henrique Coura wrote:
Essa requisição não virá de um usuário externo, mas de um usuário(sistema) interno. Acontece q essas requisições podem ser multiplas e preciso organizá-las para q meu sistema possa processá-las.


Comunicação entre 2 processos?
Requisições múltiplas?

Tudo indica que o que você precisa é JMS! Dê uma estudada nisso que acho que pode te ajudar bastante!

[]'s
Marco Campêlo
[Email] [Yahoo!] [MSN] [ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Seu servidor simples vai te dar mais dor de cabeça que usar o tomcat e estender ServletRequest direto.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Hoje em dia Web Services estão na moda (por exemplo, eles permitem que você possa ter um sistema com .NET e Java na mesma empresa sem grandes problemas de interoperabilidade).
Que tal usar Tomcat e Web Services? É meio pesado (e põe pesado nisso), mas é quase "click and go" dependendo da ferramenta que você tiver.
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team