Problemas no DWR

5 respostas
A
Olá Galera, sou relativamente novo no forum, estou com uma duvida sobre o DWR que está "empacando" o projeto da empresa que trabalho Estou fazendo a interação entre busca de clientes de um pedido de venda pelo DWR, o que acontece é que ao chamar o metodo de busca e formação de lista para o combo box, o Metodo da uma falha Abaixo a configuração do dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC 
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" 
    "http://getahead.org/dwr//dwr30.dtd">
<dwr>
	<allow>
            <create creator="new" javascript="PedidoGN">
			<param name="class" value="usesoft.gn.PedidoGN" />
            </create>
		<convert converter="bean" match="usesoft.entidades.*"/>
	</allow>
</dwr>

Codigo do metodo de busca da lista:

package usesoft.gn;

import java.util.List;
import javax.servlet.http.HttpSession;
import org.hibernate.Session;
import org.hibernate.Transaction;
import usesoft.entidades.Cliente;
import usesoft.entidades.Produto;
import usesoft.entidades.Registro;
import usesoft.persistencia.ClienteDAO;
import usesoft.persistencia.ProdutoDAO;

/**
 *
 * @author rodrigo
 */
public class PedidoGN {

    Session session;
    Transaction trasaction;
    HttpSession sessao;

    public PedidoGN(Session s, Transaction tx, HttpSession sessao) {
        this.session = s;
        this.trasaction = tx;
        this.sessao = sessao;
    }


    //Metodo responsavel de popular o combo de pesquisa de clientes para inserção no pedido
    public List clienteBusca(String nomeFantasia) throws Throwable, Exception {
        //Cria Lista de resultado
        Registro reg = (Registro) sessao.getAttribute("registroSessao");
        ClienteDAO cDAO = new ClienteDAO(this.session, this.trasaction);
        //Chama metodo do DAO para criar a lista de 10 clientes de acordo com os dados de NomeFantasia
        List<Cliente> listResult = cDAO.clienteBuscaList(nomeFantasia, reg.getCgcEmpresa());
        //Retorna a lista com o resultado para o DWR para montar o combo
        return listResult;
    }

    public Produto produtoConsulta(Produto p) {

        ProdutoDAO pDAO = new ProdutoDAO(this.session, this.trasaction, this.sessao);

        Produto pro = new Produto();

        pro.setSaldo(p.getSaldo());
        pro.setPrecoVenda(p.getPrecoVenda());
        pro.setUniMedida(p.getUniMedida());
        pro.setMarca(p.getMarca());
        pro.setDescricao(p.getDescricao());


        //recebe a lista consultada pelo loginDao no banco 
        List<Produto> produtos;
        produtos = pDAO.listaProdutos(pro);


        return null;
    }
}
JavaScript para execução do metodo no DWR
function cleanAddOptions(local){
    dwr.util.removeAllOptions(local);
}

function montaCombo(listBeans){
    dwr.util.removeAllOptions("cliente_combo");
    dwr.util.addOptions("cliente_combo", listBeans, "id", "nomeFantasia");
    
    
}

function carregaCombo(){
    cleanAddOptions('cliente_combo');
    var TextClienteNomeFantasia = dwr.util.getValue('Pedido_clienteNomeFantasia');
    nomeFantasia = TextClienteNomeFantasia;
    alert("Teste retorno Value: "+TextClienteNomeFantasia);
    alert("Teste retorno Value: "+nomeFantasia);
    //chama o metodo clienteBusca na Classe PedidoGN
    PedidoGN.clienteBusca(nomeFantasia, function resultado(lista) {
        // todo codigo a seguir sera executado apos a resposta do metodo -metodoExemplo-
        // data contém a resposta vinda do Java.
        dwr.util.addOptions("cliente_combo", lista, "id", "nomeFantasia");
    });
}
No Glassfish o erro:
INFO: Error creating an instance of the following DWR Creator: org.directwebremoting.create.NewCreator.
java.lang.InstantiationException: usesoft.gn.PedidoGN
	at java.lang.Class.newInstance0(Class.java:340)
	at java.lang.Class.newInstance(Class.java:308)
	at org.directwebremoting.create.NewCreator.getInstance(NewCreator.java:67)
	at org.directwebremoting.impl.CreatorModule.executeMethod(CreatorModule.java:149)
	at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:379)
	at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:332)
	at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:104)
	at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
	at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:662)

INFO: Method execution failed: 
java.lang.InstantiationException: usesoft.gn.PedidoGN
	at java.lang.Class.newInstance0(Class.java:340)
	at java.lang.Class.newInstance(Class.java:308)
	at org.directwebremoting.create.NewCreator.getInstance(NewCreator.java:67)
	at org.directwebremoting.impl.CreatorModule.executeMethod(CreatorModule.java:149)
	at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:379)
	at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:332)
	at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:104)
	at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
	at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:662)

5 Respostas

B

Ola,

Tenta colocar o construtor padrão na classe PedidoGN.

A

Olá Bruno, obrigado pela resposta,
tentei esse procedimento, porém ao passar pela sessão de registro ocorre o seguinte erro:

16:50:18,690 INFO  [accessLog] Method execution failed: 
java.lang.NullPointerException
	at usesoft.gn.PedidoGN.<init>(PedidoGN.java:32)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at org.directwebremoting.create.NewCreator.getInstance(NewCreator.java:67)
	at org.directwebremoting.impl.CreatorModule.executeMethod(CreatorModule.java:149)
	at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:379)
	at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:332)
	at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:104)
	at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
	at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	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:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:662)

ou seja, a sessão não é capturada, pois preciso da mesma para consulta no banco de dados.

Código alterado:
package usesoft.gn;

import java.util.List;
import javax.servlet.http.HttpSession;
import org.hibernate.Session;
import org.hibernate.Transaction;
import usesoft.entidades.Cliente;
import usesoft.entidades.Produto;
import usesoft.entidades.Registro;
import usesoft.persistencia.ClienteDAO;
import usesoft.persistencia.ProdutoDAO;

/**
 *
 * @author rodrigo
 */
public class PedidoGN {

    Session session;
    Transaction trasaction;
    HttpSession sessao;
    
    public PedidoGN(){
        
    }
    
    public PedidoGN(Session s, Transaction tx, HttpSession sessao) {
        this.session = s;
        this.trasaction = tx;
        this.sessao = sessao;
    }
    Registro reg = (Registro)sessao.getAttribute("registroSessao");
    ClienteDAO cDAO = new ClienteDAO(this.session, this.trasaction);
     
    //Metodo responsavel de popular o combo de pesquisa de clientes para inserção no pedido
    public List clienteBusca(String nomeFantasia) throws Throwable, Exception {
        //Cria Lista de resultado
        //Registro reg = (Registro)sessao.getAttribute("registroSessao");
        //ClienteDAO cDAO = new ClienteDAO(this.session, this.trasaction);
        //Chama metodo do DAO para criar a lista de 10 clientes de acordo com os dados de NomeFantasia
        List <Cliente> listResult = cDAO.clienteBuscaList(nomeFantasia, reg.getCgcEmpresa());
        //Retorna a lista com o resultado para o DWR para montar o combo
        return listResult;       
    }        

    
    public Produto produtoConsulta(Produto p) {

        ProdutoDAO pDAO = new ProdutoDAO(this.session, this.trasaction, this.sessao);

        Produto pro = new Produto();

        pro.setSaldo(p.getSaldo());
        pro.setPrecoVenda(p.getPrecoVenda());
        pro.setUniMedida(p.getUniMedida());
        pro.setMarca(p.getMarca());
        pro.setDescricao(p.getDescricao());


        //recebe a lista consultada pelo loginDao no banco 
        List<Produto> produtos;
        produtos = pDAO.listaProdutos(pro);


        return null;
    }
}
B

Opa,

Rapaz, esta linha, 32, está fora do construtor? Se sim, isto é o erro, vc está usando um atributo sem inicializa-lo.

fbahia32

andersonfluz,

tenta colocar a propriedade SCOPE.

<allow>  

            <create creator="new" javascript="PedidoGN" scope="request">  

                <param name="class" value="usesoft.gn.PedidoGN" />  

            </create>  

        <convert converter="bean" match="usesoft.entidades.*"/>  

 </allow>
A

BrunoCarlo, se eu inserir a linha 32 Registro reg = (Registro)sessao.getAttribute("registroSessao"); estaria retornando ao problema inicial, pois o construtor padrão inicializando, solicita o como parâmetro o HttpSession sessao, acho que não entendi sua orientação, mesmo assim obrigado pela ajuda.

fbahia32, fiz esse procedimento, porem ainda continua o erro, obrigado pela atenção e ajuda.

o interessante é que o DWR demonstra e orienta uma integração MVC pelo framework Spring, alguém já conseguiu uma interação com DWR em MVC independente de framework?

Criado 15 de janeiro de 2012
Ultima resposta 17 de jan. de 2012
Respostas 5
Participantes 3