Problema com encoding

Boa tarde ,

Estou com um problema meio estranho de encoding que acontece apenas no jetty 7.4.5 e nao acontece no tomcat 7.0.29 , estou usando o vraptor 3.4.1 . Abaixo segue as classes

Controller

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.gov.sp.defensoria.common.annotation.Public;

@Resource
@Path("encoding")
public class EncodingController {
	
	private Result result;
	public EncodingController(Result result) {
		this.result = result;
	}
	
	@Public
	public void tabs(){
		this.result.include("term","Organização");
	}
	
	
	@Public
	public void search(String term){
		
	}
}

tabs.jsp

     <%@include file="../app/taglibs.jsp"%>
     <iframe src='<c:url value="/encoding/search?term=${term}"/>'></iframe>

quando tenta chamar o controlador passando term como referencia na view da a exception :

HTTP ERROR 405

Problem accessing /contexto/encoding/search. Reason:

    Method Not Allowed

Powered by Jetty://

a url final esta ficando assim : http://contexto/utf/search?term=Organiza��o

esta tudo setado para ISO-8859-1 (projeto eclipse,jsp,compilação de classes,web.xml,inicialização do jetty com -Dfile.encoding)

dependendo do que inputo “Organizaç” por exemplo troca a exception

HTTP ERROR 500

Problem accessing /contexto/encoding/search. Reason:

    !utf8

Caused by:

java.lang.IllegalStateException: !utf8
	at org.eclipse.jetty.util.Utf8StringBuilder.toString(Utf8StringBuilder.java:70)
	at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:317)
	at org.eclipse.jetty.http.HttpURI.decodeQueryTo(HttpURI.java:632)
	at org.eclipse.jetty.server.Request.extractParameters(Request.java:206)
	at org.eclipse.jetty.server.Request.getParameter(Request.java:659)
	at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:169)
	at br.com.caelum.vraptor.http.VRaptorRequest.getParameter(VRaptorRequest.java:60)
	at br.com.caelum.vraptor.resource.HttpMethod.of(HttpMethod.java:47)
	at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:55)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:66)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:937)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
	at org.eclipse.jetty.server.Server.handle(Server.java:346)
	at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
	at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1048)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:601)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
	at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
	at java.lang.Thread.run(Thread.java:662)

Não sei porque ele insiste em tentar receber UTF-8 , alguma luz ?

O encoding deve ser UTF-8, e não UTF8 (tem o hífen)

Entao ai é que está … eu nao estou usando UTF-8 em lugar nenhum é tudo ISO-8859-1 … e ele insiste em receber o post ou get em utf8 …

a primeira exception sugere que o metodo acha que nao vale pro metodo GET…

tente colocar @Get("") no método…

sobre a segunda exception, vc deve estar mandando a url encodada em UTF-8, mas o servidor configurado em ISO, ou vice versa

[quote=Lucas Cavalcanti]a primeira exception sugere que o metodo acha que nao vale pro metodo GET…

tente colocar @Get("") no método…

sobre a segunda exception, vc deve estar mandando a url encodada em UTF-8, mas o servidor configurado em ISO, ou vice versa[/quote]

Entao por padrao o vraptor ja nao usa @Get ?

A primeira e a segunda exception se refere ao mesmo método search(String term)

a primeira (method not allowed) ocorre se eu passar por query string : /encoding/search?term=Organização
a segunda ocorre se eu passar : /encoding/search?term=Organizaç
se eu passo : /encoding/search?term=ç sozinho funciona … muito estranho isso.

na verdade estou mandando em ISO e o jetty (pois no tomcat funciona) insiste em receber em UTF8 mesmo eu colocando -Dfile.encoding=ISO-8859-1 ou será que tem que subir com
ISO8859_1 ? tem diferença pra vm ?

http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html

nao entendi muito bem qual usar .

talvez o vraptor nao habilite o @Get por padrao se soh tiver @Path na classe do controller…

vc nao deveria usar ç na url, deveria usar %xx (nao sei o codigo

[quote=Lucas Cavalcanti]talvez o vraptor nao habilite o @Get por padrao se soh tiver @Path na classe do controller…

vc nao deveria usar ç na url, deveria usar %xx (nao sei o codigo[/quote]

mas quando eu chamo a url no browser a url fica encodada:

http://contexto/utf/search?term=Organiza%E7%E3o

só que ta encodando pra utf8 acho tanto é que se voce tentar desencodar isso fica o caracter truncato vide esse decoder :
http://www.opinionatedgeek.com/DotNet/Tools/UrlEncode/Decode.aspx

enquanto deveria encodar :

http://contexto/utf/search?term=Organiza%c3%a7%c3%a3oto 

que esta no formato ISO …to tentando descobrir quem é o culpado da historia , vraptor , jetty , aplicação . Se continuar vou ter que apelar e tentar passar tudo pra UTF-8 . Nao sei mais pra onde correr.

o encoding dessa url com iso nao tem 4 %xx tem um soh… utf-8 tem dois %xx

pelo erro eh o jetty:

org.eclipse.jetty.util.Utf8StringBuilder.toString(Utf8StringBuilder.java:70)  
    at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:317)  

de qqer forma UTF-8 >>> ISO-8859-1… seria legal mudar pra ele =)

[quote=Lucas Cavalcanti]o encoding dessa url com iso nao tem 4 %xx tem um soh… utf-8 tem dois %xx

pelo erro eh o jetty:

org.eclipse.jetty.util.Utf8StringBuilder.toString(Utf8StringBuilder.java:70)  
    at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:317)  

de qqer forma UTF-8 >>> ISO-8859-1… seria legal mudar pra ele =)[/quote]

subi o server com o parametro -Dfile.encoding=ISO-8859-1 mais pelo visto deve ter coisa a mais para ser feita.

acho que nao adianta soh isso… precisa configurar algo no proprio jetty, tipo nos xmls de configuracao

resolvi o pepino tinha que adicionar -Dorg.eclipse.jetty.util.UrlEncoding.charset=ISO-8859-1 -Dorg.eclipse.jetty.util.URI.charset=ISO-8859-1 na inicialização para o jetty codificar a url no formato ISO por padrão ele trabalha com UTF-8 (o que acho melhor tambem) mas como o projeto não é meu o certo é recompilar todo o fonte pra UTF-8 seria outro modo de resolver.