Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Redirecionamento de páginas e domínios com Jetty Rewrite Handler
Linux user
marcelo.m87
12/04/2010
O presente artigo aborda o redirecionamento de páginas e domínios com tratamento de variáveis GET e POST em servidor Jetty.
Por: Marcelo
[ Hits: 6723 ]
Conceito: 10.0   1 voto(s)1 voto(s)1 voto(s)1 voto(s)1 voto(s) + quero dar nota ao artigo

Jetty - simplesmente operando por linha de comando - simplificado

Sou estagiário de uma empresa de TI, lá entrei em contato com muitos servidores, mas a última coisa que encarei foi o servidor Jetty de aplicações Java para web.

E não é que meu patrão falou que gostaria de fazer redirecionamento do domínio antigo para o novo, sem perder o link antigo, já que este tinha um bom PageRank no Google.

Então vamos nessa:
  • Servidor Jetty utilizado = jetty-6.1.20
  • Java = sun-java6-jdk

Para iniciar o Jetty costuma-se executar um daemon, versão standalone, ou por linha de comando mesmo. Caso você possua as variáveis de ambiente do JETTY bem definidas basta:

$ cd $JETTY_HOME

Caso contrário vá até onde está a pasta do Jetty, em algumas versões do Debian GNU/Linux podem estar, por exemplo, em:

$ cd /usr/share/jetty

Logue-se como super usuário.

$ su

Iniciando o Jetty por linha de comando:

# java -jar start.jar etc/jetty.xml

Pronto, o Jetty está operante pela linha de comando de maneira simplificada, com as configurações padrões, poderia estar sendo acessado por qualquer browser pela URL:

http://localhost:8080

Próxima página >>




Páginas do artigo
   1. Jetty - simplesmente operando por linha de comando - simplificado
   2. Criação de um aplicativo web - Tratamento de variáveis POST e GET
   3. Jetty - Rewrite Handler

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por eduveks em 14/04/2010 - 14:20h:

Vc tem os endereços em hardcode no servlet, basicamente um redirect feito a força bruta.

Isto não bem um rewrite, pois se vier mais dados por post ou por get simplismente irão para o espaço.

Não vejo utilidade prática, basicamente uma martelada, que podia ser feita de forma mais elegante usando o Nginx, veja como usar o Nginx com o Jetty, há um grande ganho de performance, e controle. Isto que vc fez ai no Jetty vc fazia no Nginx sem espinhas, e mantinha o Jetty por trás, fazendo proxy reverso.

Por acaso nunca usei o org.mortbay.jetty.handler.rewrite.RewritePatternRule, no replacement ele não suporta passar um parâmetro Get? Se suportar não era preciso fazer um servlet só para isto, bem se o Jetty não faz isto, o que acho muito estranho, poderia ser feito no Nginx e só terias a ganhar.

E para manter isto, caso vc precise de mias situações destas não é nada prático assim, ter que ficar editando código java e compilando e fazendo deploy... só por causa disto, que é uma situação de configuração de rewrite banal.

Mas esta valendo. Abraço.

[2] Comentário enviado por marcelo.m87 em 15/04/2010 - 08:32h:

Blz cara vou dar uma estudada no que vc disse.
Mas fica a dica ae pra quem não quiser usar meu método.
Vlewzaum ae!
Abras e viva o linux!

[3] Comentário enviado por Márcio Léo em 25/01/2011 - 16:51h:

Cara a dica é muito boa,tanto que o artigo obteve nota 10.É bastante prático e funcional.Me ajudou bastante.
Parabéns pelo seu artigo!

[4] Comentário enviado por Márcio Léo em 09/02/2011 - 14:50h:

Tem alguma configuração que tem que fazer para o redirecionador ser enxergado?O redirecionador que eu fiz funciona localmente mais quando é colocado no servidor não redireciona os links quebrados.

[5] Comentário enviado por marcelo.m87 em 09/02/2011 - 17:24h:

Cara eu usei este esquema em um site na web mesmo.
Da uma olhada se num ta com alguma coisinha errada no seu jetty ou faltando algum xml, ou um conflito com os mesmos.
Blz?
Abras!

[6] Comentário enviado por marcelo.m87 em 09/02/2011 - 17:25h:

Outra coisa use links completos, não use coisas para redirecionamento como, "/" "./", use a raiz com o site que quer redirecionar.

[7] Comentário enviado por Márcio Léo em 11/02/2011 - 09:33h:

Marotta tipo aquele redirecionamento que vc fez pro site de alarmes,eles querem que eu faça um pro site da mutuos...tipo na hora que você inicia o jetty ele abre o redirecionador,mas não o executa.vo posta o redirect aqui:

Redirecionador:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mortbay.jetty.servlet.DefaultServlet;

/**
*
* @author marcelo
*/
public class Redirect extends DefaultServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {

int parametro = Integer.parseInt(request.getParameter("idSecao"));

if (parametro == 8 || parametro == 10) {
if (parametro == 8) {
response.sendRedirect("http://www.mutuos.com.br/mutuos/Pagina.do?idSecao=12");
} else if (parametro == 10) {
response.sendRedirect("http://www.mutuos.com.br/mutuos/Pagina.do?");
}
}


/*switch (Integer.parseInt(request.getParameter("idSecao"))) {
case 8:
response.sendRedirect("http://www.mutuos.com.br/mutuos/Pagina.do?idSecao=12");
break;


case 10:
response.sendRedirect("http://www.mutuos.com.br/mutuos/Pagina.do?");
break;

default:
response.sendRedirect("http://www.mutuos.com.br/mutuos/pagina.do?");

}*/

} catch (Exception e) {
response.sendRedirect("http://www.mutuos.com.br");
}
}

// <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}


Xml:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<!-- =============================================================== -->
<!-- Mixin the RewriteHandler -->
<!-- =============================================================== -->


<Configure id="Server" class="org.mortbay.jetty.Server">

<!-- =========================================================== -->
<!-- Configure Rewrite Handler -->
<!-- =========================================================== -->
<Get id="oldhandler" name="handler"/>

<Set name="handler">
<New id="Rewrite" class="org.mortbay.jetty.handler.rewrite.RewriteHandler">

<Set name="handler"><Ref id="oldhandler"/></Set>
<Set name="rewriteRequestURI">true</Set>
<Set name="rewritePathInfo">false</Set>
<Set name="originalPathAttribute">requestedPath</Set>

<Set name="rules">
<Array type="org.mortbay.jetty.handler.rewrite.Rule">

<!-- return an error message if low on threads; put this at the top so it will be processed first -->
<Item>
<New id="lowThreads" class="org.mortbay.jetty.handler.rewrite.LowThreadsRuleContainer">
<!-- set the trigger for low threads ridiculously low
uncomment the block below to see it in action -->
<!--Ref id="Server">
<Get id="serverThreadPool" name="threadPool">
<Set name="minThreads">3</Set>
<Set name="maxThreads">4</Set>
<Set name="lowThreads">0</Set>
</Get>
</Ref>

<Set name="threadPool"><Ref id="serverThreadPool"/></Set-->

<Call name="addRule">
<Arg>
<New id="busyresponse" class="org.mortbay.jetty.handler.rewrite.ResponsePatternRule">
<Set name="pattern">/*</Set>
<Set name="code">500</Set>
<Set name="reason">Server busy</Set>
</New>
</Arg>
</Call>
</New>
</Item>

<!-- Add rule to protect against IE ssl bug -->
<Item>
<New class="org.mortbay.jetty.handler.rewrite.MsieSslRule"/>
</Item>

<!-- protect favicon handling -->
<Item>
<New class="org.mortbay.jetty.handler.rewrite.HeaderPatternRule">
<Set name="pattern">/favicon.ico</Set>
<Set name="name">Cache-Control</Set>
<Set name="value">Max-Age=3600,public</Set>
<Set name="terminating">true</Set>
</New>
</Item>


<!-- add a regex rule -->
<Item>
<New class="org.mortbay.jetty.handler.rewrite.RewriteRegexRule">
<Set name="regex">/mutuos/(.*)</Set>
<Set name="replacement">/Redirecionador/Redirect</Set>
</New>
</Item>

<!-- add a header pattern rule -->
<Item>
<New id="header" class="org.mortbay.jetty.handler.rewrite.HeaderPatternRule">
<Set name="pattern">*.jsp</Set>
<Set name="name">Server</Set>
<Set name="value">Server for JSP</Set>
</New>
</Item>


</Array>
</Set>
</New>
</Set>

</Configure>

Foi mal ta te encheno mais o pessoal aqui ta em cima e eu não sei mais o que fazer!!!
Forte abraço!!!
Márcio!!!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.