Problema com Vraptor apos colocar no servidor [RESOLVIDO]

Tenho uma aplicacao com Vraptor, tudo funciona normal localmente, porem quando coloco no servidor o metodo altera da pau. nao altera e apresenta o seguinte erro:

HTTP Status 405 - 

--------------------------------------------------------------------------------

type Status report

message 

description The specified HTTP method is not allowed for the requested resource ().


--------------------------------------------------------------------------------

Apache Tomcat/7.0.11

O que pode ser???

cadê o metodo?

o path esta declarado, é get ou post ?

att,

Esta aki… mas localmente roda! nao tem logica o erro.

@Restrito @Put @Path("/bcis/{bci.inscricaoCadastral}/altera") public void altera(Bci bci) { dao.altera(bci); result.redirectTo(BcisController.class).adiciona(); }

como assim ?

quando vc chama esse metodo, vc esta em uma página q contém um formulário para alterar a inscrição certo?

att,

Nao altera um formulario completo, mas localmente roda perfeito, mas no servidor na net nao…

Estava usando a versão 3.3.1 do Vraptor, mudei para a 3.1 e funcionou… nao entendi! vlw

como vc está chamando esse método altera? posta aqui o formulário por favor

Blz lucas, vou postar, mas alem de trocar as libs, eu coloquei o tomcat 6 novamente, estava com o 7. o que eu nao estava entendendo que era so com o metodo altera… mas localmente rodava…

<%@ include file="/header.jspf" %>
<form action="<c:url value="/bcis/${bci.inscricaoCadastral}/altera"/>" method="POST"  enctype="multipart/form-data">
<fieldset>
		<legend>BOLETIM DE CADASTRO IMOBILIÁRIO</legend>
		
		<fieldset>
			<legend>Inscrição cadastral</legend>
				<label for="inscricaoCadastral">Inscrição cadastral:</label>
				<input id="inscricaoCadastral" disabled="disabled" size="15px" type="text" name="bci.inscricaoCadastral" value="${bci.inscricaoCadastral}"/>
				
				&nbsp;&nbsp;&nbsp;
				<label for ="tipoInscricao">Tipo de Inscricao:</label>
			
			           <select name="bci.tipoInscricao" id="bci.tipoInscricao" > 
			             <option value="${bci.tipoInscricao}">${bci.tipoInscricao.tipoInscricao}</option>   
                    <c:forEach var="tip" items="${tipoInscricoes}">    
                        <option value="${tip}">${tip.tipoInscricao}</option>    
                    </c:forEach>    
                </select>  

....


<input type="hidden"  name="_method" value="put" />
	<input type="submit"  value="Alterar"/>	
	
	
	</fieldset>
	</form>
<%@ include file="/footer.jspf" %>

nao coloquei o form todo pq é grande, coloquei o necessario…

vlw.

o problema é o upload no tomcat 7… o VRaptor dá preferência pra usar o servlet 3 upload (que o tomcat implementa), mas o tomcat 7 tem um bug que impede o upload de funcionar em filtros (o VRaptor é um filtro).

atualize o VRaptor pra última versão e coloque os jars do commons-fileupload que deve funcionar

Olá Lucas, aquele dia eu nao alterei as libs e deixei as antigas pois tinha que fazer umas coisas no sistema. Mas hoje peguei um projeto Blank do Vraptor, copiei as libs, adicionei as do hibernate-JPA, estou usando o tomcat 6.0.32 e esta dando erro no metodo altera:

HTTP Status 405 -

type Status report

message

description The specified HTTP method is not allowed for the requested resource ().

Apache Tomcat/6.0.32

e no log4j da isso aqui.

20:37:31,500 DEBUG [DefaultResourceTranslator] trying to access /bcis/1008/altera 20:37:31,507 DEBUG [ResourceLookupInterceptor] Method POST is not allowed for requested URI. Allowed Methods are [PUT] br.com.caelum.vraptor.http.route.MethodNotAllowedException: Method POST is not allowed for requested URI. Allowed Methods are [PUT] at br.com.caelum.vraptor.http.route.DefaultRouter.routesMatchingUriAndMethod(DefaultRouter.java:109) at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:82) at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:59) 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:23) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source) 20:37:31,514 DEBUG [VRaptor ] VRaptor ended the request

vlw

se vc der uma olhada no erro:

MethodNotAllowedException: Method POST is not allowed for requested URI. Allowed Methods are [PUT]

vc anotou o método com @Put, e mandou um POST. Pra mandar put vc pode colocar um input hidden com name="_method" e value=“PUT”

Acredito que o problema não seja esse, pois esta como falou:

<input type="hidden" name="_method" value="put" /> <input type="submit" value="Alterar"/>

e anteriormente com as libs do 3.1.3 estavam ok… o que sera que estou fazendo de errado…

isso está em um form de upload de arquivos?

Nao, tenho um link no final do desse form q redireciona para um form de upload.

o seu form é mais ou menos assim?

<form action="/bcis/${bci.id}/altera" method="post">
    coisas
    <input type="hidden"  name="_method" value="put" />  
    <input type="submit"  value="Alterar"/>     
</form>

ponto importante: ele tá como multipart/form-data?

isso exatamente como falou, e esta como multipart/form-data, mesmo se retirar o multipart/form-data da no mesmo. o form é assim

[code]

" method="POST" enctype="multipart/form-data">

// coisas comuns

<a href="<c:url value="/bcis/${bci.inscricaoCadastral}/editaFoto" />"><img alt=“Alterar Imagem” title=“Alterar Imagem” border=“3” src="<c:url value="/bcis/${bci.inscricaoCadastral}/imagem"/>" width=“300px” height=“200px”>
//direciona para o form de upload de imagem, esta funcionando normal

<input type="hidden"  name="_method" value="put" />
<input type="submit"  value="Alterar"/>	
</fieldset>
</form>[/code]

vc está usando tomcat 7?

se sim, coloque o jar do commons-fileupload no projeto (o upload do servlet 3 do tomcat 7 não funciona com filters).

tirar o enctype deveria funcionar… tire e faça outro teste plz

Estou com tomcat 6.0.32, o problema nao esta no upload, esta no altera normal, somente o do formulario com imputs e combobox, como vraptor 3.1.3 funciona legal, mais com o 3.3 o metodo altera nao funciona… :(.

habilita o log de debug do VRaptor e posta aqui o que aparece na requisição problemática, por favor

O log que vc diz é o do log4j, se for está ai…

18:56:26,797 DEBUG [VRaptor ] VRaptor received a new request 18:56:26,818 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor 18:56:26,818 DEBUG [DefaultResourceTranslator] trying to access /bcis/1008/altera 18:56:26,819 DEBUG [ResourceLookupInterceptor] Method POST is not allowed for requested URI. Allowed Methods are [PUT] br.com.caelum.vraptor.http.route.MethodNotAllowedException: Method POST is not allowed for requested URI. Allowed Methods are [PUT] at br.com.caelum.vraptor.http.route.DefaultRouter.routesMatchingUriAndMethod(DefaultRouter.java:109) at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:82) at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:59) 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:23) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source) 18:56:26,820 DEBUG [VRaptor ] VRaptor ended the request