Olá!
Existem várias maneiras de fazer essa comunicação:
- Um ServerSocket, ao qual você definiria na mão um protocolo de comunicação entre os nós de rede (o que dispensaria o JSF/JSP) e deixaria teu servidor independente de cliente (qualquer coisa que consiga se conectar via TCP e entenda seu protocolo poderá utilizar seu servidor)
Vantagens: O cliente precisa apenas utilizar TCP, o que faz com que qualquer tipo de dispositivo embarcado que saiba como se comunicar via TCP consiga se comunicar com seu servidor
Desvantagens: Seu protocolo deverá ser implementado na mão e a troca de textos deverá ser parseada em ambos os nós, algo tipo (repare que você terá que fazer tudo na mão):
Cliente envia: "acao=‘salvarPedido’;"
Cliente envia: "pedido=[cliente=‘Fulano de Tal’,dataCompra=‘17/02/2000’,produtos=[‘Camisa Branca’,‘Camisa Azul’,‘Calça Vermelha’]];"
Servidor recebe, parseia, salva e devolve: “resposta=‘sucesso’;”
- O teu cliente android poderia usar páginas HTML (HTTP simples), onde ele chamaria uma URL passando os parametros via GET ou POST, como uma web application normal
Vantagens: Qualquer cliente com um browser (ou qualquer coisa que implemente HTTP) conseguiria acessar teu servidor
Desvantagens: Ainda sim, seu protocolo deverá ser desenvolvido na mão, algo do tipo (no exemplo está um GET, mas podia ser muito bem um POST):
Cliente requisita; http://www.suawebapplication.com/?acao=salvarPedido&pedido=[cliente='Fulano…
Servidor recebe, parseia, salva e devolve uma página HTML: Sucesso!
- Teu servidor pode disponibilizar seus serviços por meio de Web Services (REST ou SOAP) e fazer tua aplicação Android consumi-los, ví algo por cima aqui e aqui.
Vantagens: Como agora tanto REST quanto SOAP são specs, você tem além de um material muito rico na net, várias ferramentas para automatizar a construção da sua solução. Do lado do cliente android eu já não conheço muita coisa, mas acredito que o bind entre a comunicação entre os nós e os objetos deve ser feita de maneira transparente por alguma ferramenta. Do lado do servidor, nenhuma novidade.
Desvantagens (que na verdade não é nenhuma desvantagem): Você vai ter que estudar REST ou SOAP e achar um cliente que consuma isso no android
Abraços