Ae galera, como vão?
No nosso sistema a gente usa o jCIFS (http://jcifs.samba.org) para buscar o usuário autenticado pelo Windows e fazer o logon automático.
Isso funciona que é uma beleza, mas eu comecei a ter problemas com o rich:upload, dava erro na transferência (se eu desligar o logon automático, o upload funciona! ).
Isso acontece só no IE, no FF funciona.
Infelizmente o jcifs ele altera o header do response , colocando tamanho zero (para o IE mandar uma nova request) e acaba dando problema.
Coloquei um IF no filtro de autenticação para tentar escapar disso:
// se for upload, ignora o filtro
if ( req.getContentType()!=null && req.getContentType().indexOf("multipart/form-data")>-1)
{
System.out.println("uploading file, skipping SSO ... "+req.getContentType());
resp.setHeader("Authorization",null);
resp.setHeader("WWW-Authenticate", null);
chain.doFilter(req, resp);
return;
}
Aí ele até passa, mas quem reclama é o ajax4jsf:
09:41:14,048 INFO [STDOUT] uploading file, skipping SSO ... multipart/form-data; boundary=----------Ij5GI3Ij5gL6GI3ei4cH2Ef1ae0ae0
09:41:18,080 ERROR [PhaseListenerManager] Exception in PhaseListener RESTORE_VIEW(1) beforePhase.
org.ajax4jsf.exception.FileUploadException: IO Error parsing multipart request
at org.ajax4jsf.request.MultipartRequest.parseRequest(MultipartRequest.java:388)
E mais abaixo:
Caused by: java.io.IOException: Request prolog cannot be read
at org.ajax4jsf.request.MultipartRequest.readProlog(MultipartRequest.java:333)
at org.ajax4jsf.request.MultipartRequest.initialize(MultipartRequest.java:369)
Olhei os fontes do RichFaces e parece que realmente o tamanho do arquivo é afetado, pois o erro vem desse if em org.ajax4jsf.request.ByteSequenceMatcher :
if (this.readLength == 0) {
this.isEOF = true;
}
Alguém já teve algum problema usando o rich:upload e o jcifs e poderia dar uma luz? =)