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, em um aplicativo WebFacing, cada URL de comando CL definida é representada como um botão que um usuário clica para iniciar o aplicativo. Durante a criação do projeto do WebFacing, as URLs são gravadas em um arquivo invocations.jsp e, após o aplicativo ser implementado, estes são os botões que os usuários clicam para iniciar o aplicativo.
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 usado deve estar apto a fornecer ao aplicativo WebFacing credenciais do usuário IBM® i para que ele possa acessar recursos do IBM i.
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 " + orderProgram;
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 do WebFacing V6, um valor especial igual a *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=SYSTEM1&port=4004&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. Host no qual o requisição 5250 está localizado é SYSTEM. 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. |