You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-cs@ibatis.apache.org by Rafi Ghazarian <rg...@privateaccess.info> on 2008/09/03 18:46:14 UTC
Can iBatis handle multiple Dao Managers in the same app domain?
Hi All,
I have two DaoManagers in my application. I saw an inconsistent behavior when getting the local session handler from one of the Dao Managers. I noticed that one of the Dao Manager gave me the context (session handler) that belonged to the other Dao Manager. Furthermore, I noticed this when I had called OpenConnection on the incorrect Dao Manager. After I switched the OpenConnection on the correct Dao Manager, I got the correct session handler. Currently I notice that CondfiguerAndWatch will only work on one of the DaoManager configurations, but not both. The one that it works on, is random.
Some sample code
public void Init()
{ _daoManager1 = ServiceConfig1.GetInstance().DaoManager;
_DaoManager2 = ServiceConfig2.GetInstance().DaoManager;
_subjectDao = (ISubjectDao)_daoManager[typeof(ISubjectDao)];
_subjectIndexDao = (ISubjectIndexDao)_subjectIndexDaoManager[typeof(ISubjectIndexDao)];
_dataRequestDao = (IDataRequestDao)_daoManager[typeof(IDataRequestDao)];
}
public SubjectSearchCollection SearchSubject(SubjectSearchInputs ssi, PaginationInfo pageInfo)
{
SubjectSearchCollection subjectSearch = null;
try
{
//I found the issue here, where I was calling _ daoManager1.OpenConnection(); instead of _ DaoManager2.OpenConnection()
_ DaoManager2.OpenConnection();
subjectSearch = _subjectIndexDao.SearchSubject(ssi, pageInfo);
}
finally
{
if (_subjectIndexDaoManager != null)
_subjectIndexDaoManager.CloseConnection();
}
return subjectSearch;
}
I realize that I can have a single DaoManager with 2 contexts for the 2 different data sources, however, due to system security requirements these two database connections need to be as physically segregated as possible. That is why I went with a completely separate Dao Manager.
Please let me know if I am violating any of the base assumptions in ibatis, such as, you can only have a single dao manager in your app domain. Also, will run into any distributed transaction management issues in the future?
Thanks for your help in advance,
Rafi
Re: Can iBatis handle multiple Dao Managers in the same app domain?
Posted by Simone Busoli <si...@gmail.com>.
I think this is a bug in the released version of iBatis. That should be
fixed in the trunk.
On Wed, Sep 3, 2008 at 6:46 PM, Rafi Ghazarian <
rghazarian@privateaccess.info> wrote:
> Hi All,
>
>
>
> I have two DaoManagers in my application. I saw an inconsistent behavior
> when getting the local session handler from one of the Dao Managers. I
> noticed that one of the Dao Manager gave me the context (session handler)
> that belonged to the other Dao Manager. Furthermore, I noticed this when I
> had called OpenConnection on the incorrect Dao Manager. After I switched
> the OpenConnection on the correct Dao Manager, I got the correct session
> handler. Currently I notice that CondfiguerAndWatch will only work on one
> of the DaoManager configurations, but not both. The one that it works on,
> is random.
>
>
>
> Some sample code
>
>
>
> public void Init()
>
> { _daoManager1 = ServiceConfig1.GetInstance().DaoManager;
>
> _DaoManager2 = ServiceConfig2.GetInstance().DaoManager;
>
> _subjectDao = (ISubjectDao)_daoManager[typeof(ISubjectDao)];
>
> _subjectIndexDao = (ISubjectIndexDao)_subjectIndexDaoManager[
> typeof(ISubjectIndexDao)];
>
> _dataRequestDao = (IDataRequestDao)_daoManager[typeof(
> IDataRequestDao)];
>
> }
>
>
>
> public SubjectSearchCollection SearchSubject(SubjectSearchInputs ssi,
> PaginationInfo pageInfo)
>
> {
>
> SubjectSearchCollection subjectSearch = null;
>
>
>
> try
>
> {
>
> //I found the issue here, where I was calling _
> daoManager1.OpenConnection(); instead of _ DaoManager2.OpenConnection()
>
>
>
> _ DaoManager2.OpenConnection();
>
>
>
>
>
> subjectSearch = _subjectIndexDao.SearchSubject(ssi, pageInfo);
>
> }
>
> finally
>
> {
>
> if (_subjectIndexDaoManager != null)
>
> _subjectIndexDaoManager.CloseConnection();
>
> }
>
>
>
> return subjectSearch;
>
> }
>
>
>
> I realize that I can have a single DaoManager with 2 contexts for the 2
> different data sources, however, due to system security requirements these
> two database connections need to be as physically segregated as possible.
> That is why I went with a completely separate Dao Manager.
>
>
>
> Please let me know if I am violating any of the base assumptions in ibatis,
> such as, you can only have a single dao manager in your app domain. Also,
> will run into any distributed transaction management issues in the future?
>
>
>
> Thanks for your help in advance,
>
> Rafi
>