Problemas de Permissão com MultipartRequestInterceptor

4 respostas
T

Pessoal,

Tenho um site hospedado dentro da LocaWeb e ao utilizar o filtro MultipartRequestInterceptor esta sendo gerada uma exeção:

org.vraptor.interceptor.InterceptorInstantiationException: Unable to instantiate using public org.vraptor.interceptor.MultipartRequestInterceptor() throws java.io.IOException

at org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:68)

at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:58)

at br.com.primeiromilhao.interceptor.BancoInterceptor.intercept(BancoInterceptor.java:19 )

at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

at org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22 )

at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInte ceptor.java:38)

at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:98)

at org.vraptor.core.DefaultController.execute(DefaultController.java:46)

at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha in.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 173)

at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)

at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCha in.java:202)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at br.com.locaweb.tomcat.LocaWebValve.invoke(LocaWebValve.java:101)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)

at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754)

at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684)

at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Thread.java:595)

Caused by: org.vraptor.component.ComponentInstantiationException: Unable to instantiate using public org.vraptor.interceptor.MultipartRequestInterceptor() throws java.io.IOException

at org.vraptor.component.ComponentConstructor.newInstance(ComponentConstructor.java:45)

at org.vraptor.interceptor.InterceptorType.newInstance(InterceptorType.java:66)

at org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:62)

… 31 more

Caused by: java.lang.reflect.InvocationTargetException

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.j ava:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccess orImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:494)

at org.vraptor.component.ComponentConstructor.newInstance(ComponentConstructor.java:43)

… 33 more

Caused by: java.io.IOException: Permission denied

at java.io.UnixFileSystem.createFileExclusively(Native Method)

at java.io.File.checkAndCreate(File.java:1345)

at java.io.File.createTempFile(File.java:1434)

at java.io.File.createTempFile(File.java:1471)

at org.vraptor.interceptor.MultipartRequestInterceptor.(MultipartRequestInte rceptor.java:34)

… 38 more

Acredito que ao executar seu construtor:

public MultipartRequestInterceptor() throws IOException {

this.temporaryDirectory = new File(System.getProperty(“java.io.tmpdir”));

}

Alguém que conhece este interceptor e Linux poderia me dizer qual o diretorio eu preciso ter a permissão de escrita?
Pois acredito que este problema seja novo na locaWeb.

Valeu!

Thiago

4 Respostas

T

Pessoal,

Complementando o post anterior, fiz alguns testes dentro do servidor da LocaWeb.
Ao utilizar este interceptor seu construtor tenta criar um repositório de arquivos temporário:

public MultipartRequestInterceptor() throws IOException {

this.temporaryDirectory = new File(System.getProperty(“java.io.tmpdir”));

}

Este construtor esta tentando criar um diretorio dentro do seguinte mapeamento no servidor:

/opt/tomcat55/temp

Mas as permissões de hospedagem nao permitem.
Como se trata de um construtor sem argumento da classe, não consigo evitar essa execução mesmo especializando a classe. Existe alguma manobra para eu conseguir fornecer outro caminho ao inves do que o seguite método fornece? System.getProperty(“java.io.tmpdir”)

G

O ato de fazer um new File() não significa que você vai criar um arquivo. O Java apenas instancia o arquivo/diretório para que você possa trabalhar com ele, mas em nenhum momento ele cria.

Qual a versão do Vraptor você está usando?

Lucas_Cavalcanti

isso é do VRaptor 2.6.x provavelmente…

o jeito mais facil talvez seja pegar o fonte do MultipartRequestInterceptor, criar uma classe com o mesmo conteúdo, alterar o que vc precisa e usar essa sua classe alterada

T

Funcionou!

Fiz isso mesmo. Reescrevi a classe, modificando esta parte do código que estava fixa, para um diretório que eu tinha permissão de escrita.

Valeu pela ajuda.

Thiago

Criado 13 de janeiro de 2011
Ultima resposta 19 de jan. de 2011
Respostas 4
Participantes 3