Verificando a disponibilidade de links

Neste artigo veremos como podemos testar links sem ao menos precisar clicar neles atuando de forma dinâmica e ágil.

A quem se destina?

Programadores, analistas de Suporte, Administradores de Sites e gestores.

Pra que serve?

A idéia surgiu de uma necessidade em uma das empresas que presto serviço onde tínhamos de obter informações de diversos sites criados por nós de forma rápida e dinâmica. Sendo assim planejamos criar uma espécie de DashBoard (termo usado para análises de conteúdos em tempo real) onde teríamos em mãos o que realmente está acontecendo com cada uma de nossas aplicações, caso contrário sempre teríamos que ter um analista de suporte ou alguém do HelpDesk acessando continuamente os sistemas, verificando de forma reativa .

Essa motivação deu-se em algumas aplicações que por várias vezes no dia, em horários variáveis, um número de acessos gigantesco que por sua vez, acabava por derrubar o serviço e assim tínhamos que ficar analisando de forma reativa ou correr atrás do prejuízo. ”Digo isso pois muitas vezes temos que trabalhar com o que temos, nem sempre você terá todos os recursos de um super DataCenter nas mãos, você terá de se virar com o que tem."

Veja na figura abaixo um exemplo de como era feita a análise por sistema (individualmente);


Análise por Sistema antes
Figura 1. Análise por Sistema antes.

Nesse caso se quisermos saber como está cada aplicação em cada servidor, ficaria difícil não?

Então através do seguinte código:


public class testLinks extends HttpServlet {
   
    public static String URL = "http://www.nbc.com/Heroes/novels/downloads/";

    public static String getResponseCODE(String urlString) throws IOException {
        URL u = new URL(urlString);
        int CODEResponse = 0;
        HttpURLConnection huc = (HttpURLConnection) u.openConnection();
        huc.setRequestMethod("GET");
        huc.connect();
        CODEResponse = huc.getResponseCODE();
        if (CODEResponse != 200) {
            return "Inválido";
            
        } else {
            return "OK!";
        }
    }

Através do código de retorno desse método, ou seja se for diferente de 200, o link não conseguiu passar então teríamos essa resposta em mãos.

em jsp:

<%
                    int i = 0;
                    while (rs.next()) {
                        String link = rs.getString("sislink");
                        out.println("<tr> <td>" + rs.getString("sisdescricao") + " </td>");
                        out.println("<td> - - -</td>");
                        out.println("<td><a href=" + link + ">" + rs.getString("sislink") + "</a></td>");
                        out.println("<td>" + testLinks.getResponseCODE(link)+"</td>");
                        out.println("</tr>");
                        i++;
                    }
                %>

Através do código acima, é realizado um teste por uma página simples em JSP que lê o conteúdo de cada link armazenado em um banco de dados, passando todo os registros pela método testLinks. O que resultado é esse:

Análise por Sistema depois
Figura 2. Análise por Sistema depois.

Observação: os nomes dos sistemas, e os dados mostrados na tabela acima são fictícios afim de preservar os dados e manter o sigilo quanto as informações do modelo em questão e aqui apresentadas. Qualquer semelhança com nomes, design e links são mera coincidências.

Espero que ajude vocês nessa tarefa de monitorar sistemas, ok?

Um forte abraço++ e até a próxima.