Como mudar da Aplicacao A para a Aplicacao B?

11 respostas
B

Colegas, vou reformular minha dúvida já que acho que não conseguiram entender.

Estou em um projeto A e quero que, ao clicar em um botão, a aplicação mude o Contexto para o projeto B. A partir dai o usuário irá acessar o menu do projeto B.

Meu código no Servlet :

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String outraApp = "/Socios";
		getServletContext().getContext(outraApp).getRequestDispatcher("/socio.jsp").forward(request,response);
	}

Mas está mostrando o seguinte na tela :

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.lang.NullPointerException
	org.sindieletro.servlet.SistemaSL.doPost(SistemaSL.java:24)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Alguem poderia me ajudar ?

Bob

11 Respostas

Rafael_Nunes

Por que não usa o sendRedirect ao invés do Dispatcher?

B

Desculpe, sou novatão em Java

Poderia me explicar como faço ?

Bob :oops:

Rafael_Nunes
HttpServletResponse.sendRedirect("http://localhost:8080/appB");
peczenyj

Nesse caso como ficaria a sessão?

V

Realmente, como fica a Session ???

B

Realmente assim funcionou, eu ja tinha tentado isso mas … Dois problemas :

E depois de publicar ? como fica o localhost ?

Outro problemão é a questão da Session pois preciso fazer um filtro de acesso e para autorizar o usuario eu também preciso de Session para armazenar o ID o Nome e o nível de Permissão !

Como resolver isso ?

Um forte abraço
Bob

B

Paralelamente eu estou pensando em fazer o seguinte :

Como aqui é uma empresa e os sistemas serão todos para esta empresa eu pensei em trocar minha estrutura que atualmente é assim (Estou começando e apenas tenho o “Esqueleto”) :
Sistema Login
Sistema Socios
Sistema Estoque
Sistema Veiculos
Sistema Compras
Sistema Juridico

Ou seja, todos os sistemas separados(projetos/contextos separados).

Modificar para
Sistema Sindicato
org.sindicato.login.servlet
org.sindicato.socios.servlet
org.sindicato.estoque.servlet
org.sindicato.compras.servlet

Ou seja, TUDO TUDO dentro de um Projeto/Contexto UNICO : SINDICATO

O que acham ?

Farei certo em mudar ?

Obrigado

Bob

Rafael_Nunes

Não fica na verdade. O contexto da aplicação é outra, então não há replicação de sessões entre contextos diferentes.
As vezes que usei replicação de sessão no Tomcat/JBoss, era feita em cluster e para um mesmo contexto, não creio que ele replique para contextos separados.

Algumas formas de contornar a necessidade de sessão em contextos diferentes:

:arrow: Mandar as informações que precisar como parâmetros numa query String: sendRedirect(“site/contexto?param=value”)
:arrow: Serializar objetos e guardar as informações nele
:arrow: Pseudo Sessions
:arrow: Salvar as informações da sessão no contexto da aplicação e recuperar com(o problema é que só funcionaria dentro de um mesmo web server):

getServletContext().getContext("/contextoB").getAttribute("sessaoX");

E creio que ainda tem mais algumas outras gambiarras.

Coloca isso num arquivo de configuração, ué…

BobEsponja:
Ou seja, TUDO TUDO dentro de um Projeto/Contexto UNICO : SINDICATO

O que acham ?

Farei certo em mudar ?

Primeiro você precisa saber por que estão separados. E pra que você precisa deles separados.(São serviços? Funcionam como num tipo de SOA cada módulo independentemente? )

O mais prático pra mim também seria ter tudo numa aplicação só. Mas aí ja depende muito da estratégia e das razões da sua empresa.

B

Boa Rafael, muito esclarecedor !!!

Acho que vou mudar tudo, (aproveitar que tá no começo) para apenas um projeto/contexto.

Agora aproveitando eu não entendi uma coisa :

Coloca isso num arquivo de configuração, ué…

Não entendi, poderia me explicar melhor ?

Outra coisa :

O que significa o contexto ? é o projeto em si ? seria assim :

HttpServletResponse.sendRedirect("http://localhost:8080/appB?param=value");

Obrigado

Bob

Rafael_Nunes

String url = properties.getProperty("url.appB"); //aqui você precisaria de um arquivo .properties com o endereço do servidor sendRedirect(url); //Pronto, quando for mudar o endereço, basta mudar no arquivo

Isso mesmo.

B

Agora sim, esclareceu de vez.

abs

e muito obrigado

Bob

Criado 26 de fevereiro de 2008
Ultima resposta 27 de fev. de 2008
Respostas 11
Participantes 4