[RESOLVIDO] VRaptor - Herdar de DefaultMultipartConfig não está aumentando o limite de upload

8 respostas
jaabax

tudo bom pessoal
preciso de um limite máximo de upload de 50 MB
então fiz a seguinte classe

package ...

import br.com.caelum.vraptor.interceptor.multipart.DefaultMultipartConfig;
import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;

@Component
@ApplicationScoped
public class CustomMultipartConfig extends DefaultMultipartConfig {

    public long getSizeLimit() {
        return 50 * 1024 * 1024;
    }

}

porém, recebo a exceção abaixo quando tento fazer um upload de um arquivo de mais ou menos 30 MB

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (31256528) exceeds the configured maximum (2097152)
	at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:937)
	at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
	at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:84)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	...

alguém já passou por isso?
obrigado

8 Respostas

Rafael_Guerreiro

Eu fiz diferente e aparentemente funciona...

@Component
public class CustomMultipartConfig implements MultipartConfig {

	private DefaultMultipartConfig defaultMultipartConfig;

	public CustomMultipartConfig() {
		defaultMultipartConfig = new DefaultMultipartConfig();
	}

	@Override
	public long getSizeLimit() {
		return 50 * 1024 * 1024;
	}

	@Override
	public File getDirectory() {
		return defaultMultipartConfig.getDirectory();
	}

}
jaabax

tudo bom Rafael
infelizmente a mesma coisa ainda
to usando a versão 3.2.0 do VRaptor
as libs do projeto e inclusive o JAR onde está contido minha classe CustomMultipartConfig estão no WEB-INF/lib da minha aplicação
será que estou esquecendo de algo?
obrigado

Rafael_Guerreiro

Olha, eu uso a versão 3.3.1

Tenta atualizar as libs…

jaabax

putz velho tah foda
atualizei o VRaptor pra versão 3.3.1
msm erro :x
tentei de ambos os jeitos mas deu a mesma coisa
e o debugger nem passa pela classe CustomMultipartConfig

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (31256527) exceeds the configured maximum (2097152)
	at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:937)
	at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
	at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:97)
	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.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	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.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	...
jaabax

consegui galera
é o seguinte
eu precisei colocar a classe CustomMultipartConfig dentro de WEB-INF/classes/br/com/meuprojeto/CustomMultipartConfig.class
antes, CustomMultipartConfig estava dentro de um JAR (minhalib.jar) localizado em WEB-INF/lib do WAR (exploded) do meu projeto
assim resolveu
:smiley:

Lucas_Cavalcanti

jaabax,

se a classe está dentro de um jar o VRaptor não escaneia ela por padrão…

dentro do jar vc precisa colocar o pacote base da sua classe no web.xml, na configuração de packages

jaabax

oi lucas
então eu consigo fazer o scan do vraptor dentro de um JAR?
poderia me dizer qual a modificacao eu tenho q fazer no web xml para q isso aconteca?
obrigado

Lucas_Cavalcanti

vc tem uma configuração que termina em vraptor.packages? se sim, é só colocar o pacote base das classes que estão dentro do jar… quanto mais específico o pacote melhor.

senão é só adicionar a configuração de packages que nem explica nessa página:
http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/

(configuração de packages)

Criado 20 de julho de 2011
Ultima resposta 27 de jul. de 2011
Respostas 8
Participantes 3