Hi,

 Indeed! 2.2.0 works!  So I continue with conversion :-)

Thanks
/David
Clinton Begin wrote:

Try 2.2.0 if you haven't already...

Might be a bug we've already fixed.
Cheers,
Clinton

On 8/18/06, *David Gagnon* < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Hi all,

      I'm pretty sure this is a session problem.  But there is an obscur
    point that look to me like a bug.  It's surely not one though.

    Trying to make the problem simple:

    On the same http request (so same thread) the following function #1 is
    called followed by another.  When the fynally is excuted from
    Function
    #1.  The sessionScope get reseted and put back into the pool!  But
    it's
    not removed from SqlMapSessionImpl!!
    When function #2 is called it grab the same SqlMapSessionImpl with the
    reseted SessionScope and that lead me to a NullPointerException.

    I suppose my problem is simple to fix .. tanks for your
    help!  That will
    bring me one step far in my upgrade process!
    Best Regards


    /David





    Function #1
    ------------
    public Object getObject(DbConnection dbCon, String mapKey, Object
    param, boolean mustFind) throws DatabaseException, SQLException {

            Object result = null;
            boolean handleTransactionLocally = false;
            try {
                if (dbCon == null) {
                    handleTransactionLocally = true;
                    dbCon = connectionFactory.getConnection();
                    // TODO: check if that really usefull
                    dbCon.setReadOnlyConnection(true);
                }

    //            MappedStatement statement =
    sqlMap.getMappedStatement(mapKey);
    //            result =
    statement.executeQueryForObject(dbCon.getConnection(), param);

                sqlMap.setUserConnection(dbCon.getConnection());
                result = sqlMap.queryForObject (mapKey, param);

                if ((result == null) && (mustFind)) {
                    throw new DataNotFoundException("Object not found for
    param: (" + param.toString() + ")");
                }
            } catch (SQLException e) {
                if (handleTransactionLocally) {

    ExceptionAdaptor.instance(exceptionAdaptorKey).getMappedException(e,
    "Unable to get: " + e.getMessage(), true,
    ExceptionAdaptor.ACTION_SEARCH , param);
                } else {
                    throw e;
                }
            } finally {
                sqlMap.setUserConnection(null);
                if (dbCon != null)
                dbCon.closeAll(handleTransactionLocally);
            }
            return result;

        }
    #Function 2
    -------
    public final SearchResult getListDynamicWithRowCount(String mapKey,
    String rowCountMapKey, Map param) throws DatabaseException {
            PaginatedList paginatedList = null;
            Integer nbRows = new Integer(-1);
            Integer pageSize = null;
            try {
                paginatedList = sqlMap.queryForPaginatedList(mapKey,
    param,
    pageSize.intValue());


            } catch (SQLException e) {
    //            log.error("Error during sql: " + e.getMessage(), e);

    ExceptionAdaptor.instance(exceptionAdaptorKey).getMappedException(e,
    "getList: " + e.getMessage(), true, ExceptionAdaptor.ACTION_SEARCH
    , param);
            }

            return new SearchResult(paginatedList, nbRows.intValue());
        }


    Exception:
    java.lang.NullPointerException
        at
    com.ibatis.sqlmap.engine.mapping.statement.PaginatedDataList.getList
    (PaginatedDataList.java:138)
        at
    
com.ibatis.sqlmap.engine.mapping.statement.PaginatedDataList.pageTo(PaginatedDataList.java:98)
        at
    com.ibatis.sqlmap.engine.mapping.statement.PaginatedDataList.<init>(
    PaginatedDataList.java:46)
        at
    
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForPaginatedList(SqlMapExecutorDelegate.java:667)
        at
    com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForPaginatedList
    (SqlMapSessionImpl.java:109)
        at
    
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForPaginatedList(SqlMapClientImpl.java:86)
        at
    com.davecorp.webos.dao.DaoSupport.getListDynamicWithRowCount(DaoSupport.java
    :205)
        at
    
com.davecorp.webos.dao.DaoSupport.getListDynamicWithRowCount(DaoSupport.java:189)
        at
    
com.unik.unikommerce.dao.resource.UkResourceDaoImpl.getResourceListDynamic(UkResourceDaoImpl.java:585)
        at
    
com.unik.unikommerce.dao.resource.UkResourceDaoCachedImpl.getResourceListDynamic(UkResourceDaoCachedImpl.java:315)
        at
    
com.unik.unikommerce.managers.InitUnikommerceApplicationManagerImpl.configureUserSession(
    InitUnikommerceApplicationManagerImpl.java:50)
        at
    
com.davecorp.webos.struts.WindowEnabledRequestProcessor.processRequestSetup(WindowEnabledRequestProcessor.java:265)
        at
    com.davecorp.webos.struts.WindowEnabledRequestProcessor.process
    (WindowEnabledRequestProcessor.java:113)
        at
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
        at
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
        at javax.servlet.http.HttpServlet.service (HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
    
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at
    org.apache.catalina.core.ApplicationFilterChain.doFilter
    (ApplicationFilterChain.java:173)
        at
    
com.davecorp.webos.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:141)
        at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
    (ApplicationFilterChain.java:202)
        at
    
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
    
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java
    :213)
        at
    
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at
    
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
        at
    org.apache.catalina.core.StandardHostValve.invoke
    (StandardHostValve.java:126)
        at
    
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at
    
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at
    
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
    (Http11BaseProtocol.java:664)
        at
    
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at
    
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java
    :80)
        at
    
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Unknown Source)



    #Function from SqlMapSessionImpl

    private SqlMapSessionImpl getLocalSqlMapSession() {
        SqlMapSessionImpl sqlMapSession = (SqlMapSessionImpl)
    localSqlMapSession.get();
        if (sqlMapSession == null || sqlMapSession.isClosed()) {
          sqlMapSession = new SqlMapSessionImpl(this);
          localSqlMapSession.set (sqlMapSession);
        }
        return sqlMapSession;
      }








Reply via email to