Problemas com o pool de conexões com o Mentawai

2 respostas
H

Olá Pessoal,

Sou novato por aqui e novato com JAVA embora já tenha estudado um bocado. Gostaria de expor uma problema de uma aplicação para que vcs possam me ajudar.

Estou usando:

Mentawai 1.9
Tomcat 5.5
Java 1.5
Firebird 2.0 (Usando o driver - Jaybird)
(Obs.: Os jars do Jaybird estão em \WEB-INF\lib)

O meu problema está no uso de um pool de conexões com o Firebird. Quando uma action é chamada e vou usar uma conexão do pool ele está me retornado o seguinte erro:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Exception while invoking action busca: null / java.lang.NullPointerException / null / java.lang.NullPointerException
org.mentawai.core.Controller.service(Controller.java:533)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NullPointerException
bookshop.busca.execute(busca.java:19)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:175)
org.mentawai.core.Controller.invokeAction(Controller.java:631)
org.mentawai.core.Controller.service(Controller.java:496)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.

segue abaixo o codigo do ApplicationManager.java:

import org.mentawai.core.*;
import org.mentawai.db.*;
import org.mentawai.filter.*;
import java.util.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import bookshop.*;

public class ApplicationManager extends org.mentawai.core.ApplicationManager {

    private ConnectionHandler connHandler;

    public void init(Context application) {

    	

        this.connHandler = new C3P0ConnectionHandler("org.firebirdsql.jdbc.FBDriver",
                                                     "jdbc:firebirdsql:localhost/3050:hubnerGDB",
                                                     "sysdba",
                                                     "masterkey");

        C3P0ConnectionHandler c3p0 = (C3P0ConnectionHandler) connHandler;
        ComboPooledDataSource pool = (ComboPooledDataSource) c3p0.getComboPooledDataSource();
        pool.setMaxIdleTime(600); 
        pool.setInitialPoolSize(5);
        pool.setMaxPoolSize(20);

    }

	public void loadActions() {

        List<Filter> common = new ArrayList<Filter>();

        // Validation for all actions that implement Validatable
        common.add(new ValidatorFilter());

        // IoC (Autowiring)
  	    common.add(new IoCFilter());

        // Connection Pooling
        common.add(new ConnectionFilter("connection", connHandler));

        // DI (anything that needs a connection will receive a connection !!!!)
        common.add(new DIFilter("connection", java.sql.Connection.class));

        // Injection for actions (or models if action implements ModelDriven)
        common.add(new InjectionFilter());
        addGlobalFilter(common);


     action("/newsletter", newsletter.class)
            .on(SUCCESS, fwd("/jsp/resultadonewsletter.jsp"))
            .on(ERROR,   fwd("/jsp/semtitulo.jsp"));

     action("/busca", busca.class)
            .on(SUCCESS, fwd("/index.jsp"))
            .on(ERROR,   fwd("/jsp/semtitulo.jsp"));

/* muito do código aqui vem do exemplo: mybook do site do Mentawai */

	}
}

e da action em questão:
busca.java

package bookshop;
import java.sql.*;
import java.util.*;
import org.mentawai.core.*;

public class busca extends BaseAction {

public String execute() throws Exception {
String titulo = input.getStringValue("valor");
if (titulo == null) {
return ERROR;

}

Connection conn = (Connection) input.getValue("connection");
PreparedStatement stmt = null;
ResultSet rset = null;

stmt = conn.prepareStatement("select bairro_cli from cliente where nome_fantasia = 'FEIRA CULTURAL'");

/* ---> está ocorrendo o erro aqui, na linha acima e o SQL está ok tb -------*/

rset = stmt.executeQuery();

if (rset.next()) {
titulo = rset.getString(1);
}

try { if (rset != null) rset.close(); } catch(Exception e) { }
try { if (stmt != null) stmt.close(); } catch(Exception e) { }

BeanPrincipal bp = (BeanPrincipal) session.getAttribute("bp");
bp.setTitulo_cabecalho(titulo);

return SUCCESS;
}

}

Vale ressaltar que a 'string de conexão' está correta pois já testei a conexão direta com o banco e está ok.

o arquivo web.xml está assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

    <servlet>
      <servlet-name>Controller</servlet-name>
      <servlet-class>org.mentawai.core.Controller</servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>


    <servlet-mapping>
	<servlet-name>Controller</servlet-name>
	<url-pattern>*.mtw</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>DebugFilter</filter-name>
        <filter-class>
            org.mentawai.util.DebugServletFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>DebugFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>



    <session-config>
        <session-timeout>
            1
        </session-timeout>
    </session-config>

    <error-page>
          <error-code>403</error-code>
          <location>/erros/403.html</location>
    </error-page>

    <error-page>
          <error-code>404</error-code>
          <location>/erros/404.html</location>
    </error-page>

    <welcome-file-list>
      	<welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>


</web-app>

ja perdi alguns dias tentando resolver isso e não consegui. Será que algum dos mestres aqui poderiam me ajudar a encontrar o erro que está ocorrendo, como relatei acima?

Desde já,
obrigado.

Hübner (ETI)

2 Respostas

amilhoranza

Sugiro que vc poste isso no forum do menta
http://forum.mentaframework.org

Lá os usuários terão mais habilidade em ajudá-lo nesse framework.

saoj

Isso. Já foi inclusive respondido: http://forum.mentaframework.org/posts/list/1177.page

Criado 25 de abril de 2007
Ultima resposta 25 de abr. de 2007
Respostas 2
Participantes 3