ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Clinton Begin" <clinton.be...@gmail.com>
Subject Re: Updating from ibatis 1.3.1 to 2.1.7 .. should I? Does it worth the effort?: ... NullPointerException. It look like a bug ...
Date Mon, 21 Aug 2006 03:39:27 GMT
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 <dgagnon@siunik.com> 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;
>   }
>
>
>
>
>
>

Mime
View raw message