Utilizado quando um sistema desktop precisa abrir uma URL do sistema web. Assim, é necessário que o usuário seja automaticamente logado no sistema para o qual ele deseja ir, fazendo-se necessária a criação de um passaporte de logon. A criação de um Passaporte de Logon em sistemas desktop pode ser feita através do uso de um serviço remoto chamado PassaporteDesktopService
.
O passaporte para sistemas desktop é criado através de um serviço remoto que utiliza o Spring Remoting. Assim, para que a aplicação utilize o passaporte, ela deve possuir as bibliotecas do Spring em seu classpath. Além disso, é necessário criar no seu applicationContext.xml
o seguinte bean:
<bean id="passaporteDesktopService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl" value="http://localhost:8080/shared/remoting/PassaporteService" /> <property name="serviceInterface" value="br.ufrn.arq.desktop.PassaporteDesktopService" /> </bean>
Onde serviceUrl
é a URL do serviço remoto, que está implantado no contexto shared na URL /remoting/PassaporteService
; e serviceInterface é a interface remota do serviço, que é a br.ufrn.arq.desktop.PassaporteDesktopService
.
Em seguida, é necessário invocar o serviço através do lookup do bean passaporteDesktopService no Application Context do Spring, e chamar o método criarPassaporte, passando como parâmetros o id do usuário, o login do usuário, o sistema de origem e o sistema de destino, conforme mostrado no código abaixo:
ApplicationContext ac = new ClassPathXmlApplicationContext("br/ufrn/arq/desktop/applicationContext.xml"); PassaporteDesktopService service = (PassaporteDesktopService) ac.getBean("passaporteDesktopService"); service.criarPassaporte(3232, "david", 3, 2);
Após criar o passaporte, é necessário chamar a URL do sistema web utilizando o browser do usuário. Para isso, foi criada a classe ChamarSubsistema
, que possui o método estático chamar(), para o qual passamos como argumento a URL desejada.
Um exemplo completo pode ser visto no código abaixo, no qual criamos o passaporte e chamamos a URL:
ApplicationContext ac = new ClassPathXmlApplicationContext("br/ufrn/arq/desktop/applicationContext.xml"); PassaporteDesktopService service = (PassaporteDesktopService) ac.getBean("passaporteDesktopService"); service.criarPassaporte(3232, "david", 3, 2); ChamarSubsistema.chamar("http://localhost:8080/sigaa/logar.do?dispatch=logOn&&user.login=david&passaporte=true&url=/sigaa/portais/discente/discente.jsf");