Os aplicativos do WebFacing podem ser chamados através de programação a partir de outros aplicativos da Web. Isso fornece uma maneira de integrar interfaces com o usuário geradas pelo WebFacing com aplicativos da Web existentes.
Os aplicativos do WebFacing são ativados a partir de URLs. Geralmente, uma URL é representada como um link no qual o usuário clica para iniciar o aplicativo. Durante a conversão do WebFacing, as URLs são gravadas em um arquivo index.jsp e, após a implementação do aplicativo, estes são os links utilizados pelos usuários para iniciar o aplicativo. No entanto, as URLs do WebFacing também podem ser construídas por outros programas, como os servlets do controlador. É possível enviar estas URLs de volta aos usuários como links a serem clicados em uma página da Web. Mas, mais importantes, as URLs podem ser utilizadas nos métodos forward() e sendRedirect() em outros aplicativos da Web. Utilizando URLs do WebFacing determinados dinamicamente com os métodos forward() e sendRedirect() significa que um programa como um servlet controlador pode executar ações, tais como a determinação do host para utilização, o programa WebFacing para ativamento, qual comando de CL a utilizar para o programa WebFacing ou outras ações. Após a conclusão destas ações, o servlet pode fornecer o aplicativo WebFacing apropriado, com parâmetros já definidos, diretamente a um usuário.
Com o controle da chamada do WebFacing, também é possível utilizar métodos alternativos de autenticação. Toda autenticação do usuário pode ser, agora, executada em um servlet personalizado antes de chamar o WebFacing. O mecanismo de autenticação utilizado deve estar apto a fornecer o aplicativo WebFacing com as credenciais de usuário do iSeries, para que este possa acessar os recursos do iSeries.
Aqui há um exemplo simples de uma determinação do comando de CL para utilização no ativamento de um programa:
newURL = "WFInvocation.do?clcmd=call " + iseriesProgram;newURL poderia então ser utilizado como URL de avanço ou de redirecionamento para seus métodos forward() ou sendRedirect().
http://<hostname>:<port>/<application>/WFInvocation.do?clcmd=call%20ordentr
O exemplo mostra a URL completa iniciando com http://<hostname>:<port>/<application>/. O valor para newURL é a cadeia seguinte. Ou seja, a cadeia: WFInvocation.do?clcmd=call%20ordentr. Em um exemplo como este, a primeira parte da URL: http://<hostname>:<port>/<application>/, representa host, a porta e a raiz do contexto para o aplicativo. Se seu servlet controlador estiver na mesma raiz de contexto, este não será sempre necessário para que o servlet determine a URL inteira. Se necessário, é possível codificar o servlet para construir uma cadeia para a URL totalmente qualificada.
É possível especificar os prefixos de comandos CL que serão permitidos para chamada programática utilizando o parâmetro clcmd. Chamadas programáticas que utilizam o parâmetro clcmd e especificam um valor não iniciado com um prefixo permitido serão bloqueadas para execução. O padrão é não permitir chamadas programáticas que substituam o comando CL a ser executado.
Para a migração de projetos a partir do plug-in do WebFacing, versão 5.1.2.2 e anterior, para a versão 6, um valor especial de *ALL será incluído para permitir que todos os comandos CL sejam executados.
<context-param> <param-name>WFCLCMDAllowed0</param-name> <param-value>*ALL</param-value> </context-param>
Se o parâmetro clcmd não for utilizado ou se os valores de clcmd utilizados forem conhecidos, você deverá remover o valor *ALL e fornecer valores conforme indicado a seguir.
Para especificar quais prefixos de comandos são permitidos, edite a origem do arquivo web.xml referente ao seu aplicativo WebFacing. Inclua nomes de parâmetros formados por WFCLCMDAllowed, seguidos de um texto adicional para tornar cada parâmetro distinto. Em seguida, inclua um valor de parâmetro para cada de forma a especificar o comando que é permitido. O exemplo a seguir permite todos os comandos iniciados com CALL MYCMD e GO MYMENU.
<context-param> <param-name>WFCLCMDAllowed0</param-name> <param-value>GO MYMENU</param-value> <param-name>WFCLCMDAllowed1</param-name> <param-value>CALL MYCMD</param-value> </context-param>
Forneça parâmetros de contexto adicionais com valores, conforme necessário.
Isso permitirá valores de clcmd como CALL MYCMDisOK ou CALL MYCMD PARAM(ONE), mas não permitirá valores como CALL MY ou CALL OTHERCMD. De forma semelhante para GO MYMENU, os comandos permitidos devem começar com a cadeia especificada. A distinção entre maiúsculas e minúsculas é ignorada para a comparação.
http://<hostname>:<port>/<application>/WFInvocation.do?clcmd=call%20ordentr&host=ISERIES1&userid=WEBFACING&password=WEBFACING
Nota: neste exemplo as cadeias <hostname> e <port> referem-se ao nome do host e à porta para o servidor de aplicativos no qual o aplicativo WebFacing é implementado. <application> é a raiz do contexto para o aplicativo implementado. O exemplo mostra os seguintes valores sendo transmitidos pela URL: O comando do CL é call ordentr. O host onde o aplicativo 5250 está localizado é o ISERIES. O ID do usuário é WEBFACING. A senha é WEBFACING. Vários parâmetros são separados por &.
método javax.servlet.RequestDispatcher's forward() | método javax.servlet.HttpServletResponse's sendRedirect() |
---|---|
Uma chamada do servidor. Este método chama outro recurso, recupera sua saída e retorna-o ao Cliente. | Envia o código de status HTTP 302 ao navegador. O navegador automaticamente reconectará à URL do recurso. Neste caso, o navegador sabe que a saída veio do outro recurso. |