NullPointer Trinidad fileUpload

2 respostas
palerique

Caros,

Depois de perder uma penca de cabelo para conseguir fazer o deploy de uma simples aplicação que faz o upload de um XML, o analisa e, caso esteja tudo ok, permite a submissão dele para um web service, a aplicação não funciona no servidor.

Utilizei o Trinidad por causa do seu componente para upload de arquivos.

Quando rodo a aplicação na minha maquina para testar tudo funciona perfeitamente, agora no servidor ele dá um nullpointer no listener que lida com o upload de arquivos do Trinidad.

Alguém tem uma solução pra isso?

<23/08/2011 11h08min17s BRT> <Warning> <Socket> <BEA-000449> <Closing socket as
no data read from it on 192.168.56.1:3.550 during the configured idle timeout of
 5 secs>
<23/08/2011 11h08min17s BRT> <Warning> <Socket> <BEA-000449> <Closing socket as
no data read from it on 192.168.56.1:3.551 during the configured idle timeout of
 5 secs>
23/08/2011 11:08:18 com.sun.faces.context.ExceptionHandlerImpl log
GRAVE: JSF1073: javax.faces.event.AbortProcessingException obtido durante o proc
essamento de PROCESS_VALIDATIONS 3: UIComponent-ClientId=j_idt9, Message=/index.
xhtml @28,97 valueChangeListener="#{uploadController.fileUpload}": java.lang.Nul
lPointerException
23/08/2011 11:08:18 com.sun.faces.context.ExceptionHandlerImpl log
GRAVE: /index.xhtml @28,97 valueChangeListener="#{uploadController.fileUpload}":
 java.lang.NullPointerException
javax.faces.event.AbortProcessingException: /index.xhtml @28,97 valueChangeListe
ner="#{uploadController.fileUpload}": java.lang.NullPointerException
        at javax.faces.event.MethodExpressionValueChangeListener.processValueCha
nge(MethodExpressionValueChangeListener.java:157)
        at javax.faces.event.ValueChangeEvent.processListener(ValueChangeEvent.j
ava:134)
        at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcast(UIXC
omponentBase.java:814)
        at org.apache.myfaces.trinidad.component.UIXEditableValue.broadcast(UIXE
ditableValue.java:243)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:752)

        at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:11
67)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValida
tionsPhase.java:76)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run
(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecuri
tyHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:56)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilt
erImpl(TrinidadFilterImpl.java:293)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilte
r(TrinidadFilterImpl.java:199)
        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFi
lter.java:92)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsF
ilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppS
ervletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletC
ontext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
ava:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
Caused by: java.lang.NullPointerException
        at br.gov.ana.alephuploadandtestxmlapp.view.controller.UploadXMLControll
er.fileUpload(UploadXMLController.java:55)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.el.parser.AstValue.invoke(Unknown Source)
        at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpress
ion.java:105)
        at javax.faces.event.MethodExpressionValueChangeListener.processValueCha
nge(MethodExpressionValueChangeListener.java:144)
        ... 29 more

Se precisarem de mais alguma parte do código é só pedir!

Thx,
PH
www.palerique.com.br

2 Respostas

WRYEL

poste fonte do uploadController :slight_smile:

palerique
import java.io.IOException;
import java.io.InputStream;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;

import org.apache.myfaces.trinidad.model.UploadedFile;


@ManagedBean(name = "uploadController")
@SessionScoped
public class UploadXMLController {
    private EstacaoMedicaoXMLEntityDto entidadeDto = null;
    private List<String> mensagemErro = null;

    private EstacaoMedicaoXMLEntity entidade = null;

    @EJB(name = "UploadXMLSessionEJB", mappedName = "UploadXMLSessionEJB")
    private UploadXMLSessionEJBRemote service;

    private String mensagemResposta;
    private Integer quantidadeInserida;

    public void fileUpload(ValueChangeEvent event) {

        UploadedFile file = (UploadedFile)event.getNewValue();

        if (file != null) {
            InputStream is = null;

            try {
                is = file.getInputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
            entidade = service.criarEntidade(is);
            entidadeDto = criarDto(entidade);
            mensagemErro = service.validate(entidade);
        }
    }

    public void novoArquivo(ActionEvent event) {

        System.out.println("Passei por aqui!!!!!!!!!!");

        entidade = null;
        entidadeDto = null;
        mensagemErro = null;
        mensagemResposta = null;
        quantidadeInserida = null;

    }

    public void submeterArquivo(ActionEvent event) {

        try {
            Map respostaWebService = service.submeterWebService(entidade);

            mensagemResposta = (String)respostaWebService.get("mensagem");
            quantidadeInserida = (Integer)respostaWebService.get("quantidade");

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public void setEntidadeDto(EstacaoMedicaoXMLEntityDto entidade) {
        this.entidadeDto = entidade;
    }

    public EstacaoMedicaoXMLEntityDto getEntidadeDto() {
        return entidadeDto;
    }

    public void setMensagemErro(List<String> mensagemErro) {
        this.mensagemErro = mensagemErro;
    }

    public List<String> getMensagemErro() {
        return mensagemErro;
    }

    private EstacaoMedicaoXMLEntityDto criarDto(EstacaoMedicaoXMLEntity ent) {

        EstacaoMedicaoXMLEntityDto dto = new EstacaoMedicaoXMLEntityDto();

        dto.setLogin(ent.getLogin());
        dto.setSenha(ent.getSenha());

        List<EstacaoDto> listaEstacoesDto = new ArrayList();

        for (Estacao e : ent.getEstacoes()) {
            EstacaoDto eDto = new EstacaoDto();

            eDto.setCodigoFlu(e.getCodigoFlu());
            eDto.setCodigoPlu(e.getCodigoPlu());

            List<MedicaoDto> listaDeMedicoesDto = new ArrayList();

            for (Medicao m : e.getMedicoes()) {
                MedicaoDto mDto = new MedicaoDto();

                mDto.setChuva(m.getChuva());
                mDto.setDataMedicao(m.getDataMedicao());
                mDto.setNivel(m.getNivel());
                mDto.setVazao(m.getVazao());

                listaDeMedicoesDto.add(mDto);
            }

            eDto.setMedicoes(listaDeMedicoesDto);

            listaEstacoesDto.add(eDto);
        }

        dto.setEstacoes(listaEstacoesDto);

        return dto;
    }

    public void setMensagemResposta(String mensagemResposta) {
        this.mensagemResposta = mensagemResposta;
    }

    public String getMensagemResposta() {
        return mensagemResposta;
    }

    public void setQuantidadeInserida(Integer quantidadeInserida) {
        this.quantidadeInserida = quantidadeInserida;
    }

    public Integer getQuantidadeInserida() {
        return quantidadeInserida;
    }
}
Criado 23 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 2
Participantes 2