[quote=sergiotaborda][quote=pirado18]Sobre o seu comentário do segundo item que observei, no caso eu pensei em utilizar a abordagem que o pessoal me indicou, 3 inputs na tela de login:
Tenant, Login e Password.
O único “fo.da” disso é que não fica transparente para o usuário, o que eu acho uma prática ruim.
No caso não precisaria então de ter dois acessos a banco, mas se eu for deixar transparente para o usuário talvez seja a única solução no momento.
[/quote]
3 inputs é contra o proposito da coisa. O cliente não deve precisar saber o seu tennatid isso é system only. Normalmente vc mapeia o dominio para o tenant id. Isto é trivial em servelets. Vc pega o URL da chamada com um filtro e faz o mapeamento, ou diretamente via maniuplação do url ou via tabela onde va bate o dominio e o sistema cospe o Id. Isto tem que ser feito a cada chamada ao sistema porque o tenant Id é um parametro de sessão que sempre tem que estar lá. Então , algum esquema de cache é aconcelhado ( mesmo que seja por manipulação do url )
Depois quando o cara vê a tela de login ele vê 2 campos, username e passowrd, normalmente. O sistema inclui o tenanr id automáticamente no request via o filtro.
Se o cada acessa http://cliente1.meusistema.com , isto mapeia para tenantId= cliente1. Mas se o cara acessa www.meusistema.com, isso manda o cara para o site padrão do sistema onde ele pode ver como comprar, etc… Outra forma seria colocar um contexto por tenant e mapear no DNS isto eu não sei como faria. ou seja, htttp://client1.meusistema.com mapeia para http://www.meusistema.com/cliente1 por baixo dos panos, mas o browser só vê http://cliente1.meusistema.com.
Estas são as alternativas que eu pensei, tlv haja outras. Mas o ponto é que nunca o cliente deve saber o seu tenantId.[/quote]
É o X da questão!
Eu concordo e como pode ver, 3 inputs quebra o principio da transparência.
O grande problema é conseguir mapear essas urls. Acima eu citei uma solução que estou testando no tomcat 7. Consegui fazer com que todos os contextos acessem a mesma pasta, da seguinte maneira:
<Context path="/MyFaces" docBase="/MyFaces" />
<Context path="/Cliente1" docBase="/MyFaces" />
<Context path="/Cliente2" docBase="/MyFaces" />
<Context path="/Cliente3" docBase="/MyFaces" />
Na primeira linha, eu obrigo o tomcat no deploy a criar o diretório MyFaces, baseado no meu war “MyFaces.war”. Em seguida é feito o deploy de cada contexto individualmente na mesma pasta.
Eu não sei se isso é válido. É válido? alguem sabe me responder?
Eu não sei se pode ocasionar algum problema de incompatibilidade, pode ocorrer? Alguma problema de acesso concorrente?
Eu notei apenas que o deploy é demorado, pois faz cada deploy individualmente, como se fossem 4 webapps diferentes!