mybatisnet Web环境下多线程问题

    最近在Web环境下使用mybatis,在Winform和服务模式下运行(多线程访问数据库)没有问题。但是在IIS的环境中出现了一个WebSessionStore: Could not obtain reference to HttpContext 异常。

之前有听说过mybatis在多线程模式下会有异常,不过一直没有遇到过.以为是老版本的问题,也没在意。直到今天遇到这个问题才想起这么个事,首先问度娘,找到了这篇文章。感谢二位。

    http://q.cnblogs.com/q/24859/

    不过我在配置中没有找到配置的方法,在源码中倒是有这么一段:

      

[Test]
        public void Can_plug_HybridWebThreadSessionStore()
        {
            string uri = "assembly://Apache.Ibatis.DataMapper.SqlClient.Test/bin.Debug/SqlMap_Test_Configure.config";
            IResource resource = ResourceLoaderRegistry.GetResource(uri);

             //主要是这个(楼主注)
            ConfigurationSetting setting = new ConfigurationSetting();
            setting.SessionStore = new HybridWebThreadSessionStore("test");
            setting.ValidateMapperConfigFile = true;

            IConfigurationEngine engine = new DefaultConfigurationEngine(setting);
            engine.RegisterInterpreter(new XmlConfigurationInterpreter(resource));

            IMapperFactory mapperFactory = engine.BuildMapperFactory();
            IDataMapper dataMapper = ((IDataMapperAccessor)mapperFactory).DataMapper;

            Account account = dataMapper.QueryForObject<Account>("GetAccountViaResultClass", 1);

            Assert.AreEqual(1, account.Id, "account.Id");
            Assert.AreEqual("Joe", account.FirstName, "account.FirstName");
            Assert.AreEqual("Dalton", account.LastName, "account.LastName");
            Assert.AreEqual("[email protected]", account.EmailAddress, "account.EmailAddress");
        }

    于是按照这个在代码中进行了一下修改,问题果然解决了。回头在翻翻相关文档,补充一下如果在配置文件中进行配置,有知道的也欢迎指出。

    

    这篇文章也有详细的说明:

    http://www.iloveher.cn/ibatis/hybridwebthreadsessionstore.html

    HttpContext的详细说明请查阅:

    http://www.cnblogs.com/fish-li/archive/2013/04/06/3002940.html

时间: 2024-08-05 09:41:15

mybatisnet Web环境下多线程问题的相关文章

Web环境下applicationContext.xml文件配置

在web环境下(web.xml)如何配置applicationContext.xml文件 <listener>  <listener-class>   org.springframework.web.context.ContextLoaderListener  </listener-class> </listener> 或: <servlet>  <servlet-name>context</servlet-name>  

SSM——WEB环境下搭建框架(总结)

SSM--WEB环境下搭建框架(总结) (步骤跟随程序执行顺序) 一.web应用开始运行,首先进入web.xml中,执行spring环境搭建工作 1 <!-- 配置spring环境 --> 2 <context-param> 3 <param-name>contextConfigLocation</param-name> 4 <param-value>classpath:applicationContext.xml</param-value

Hadoop2.2简单上传文件,web环境下启动报错,求大神

String home = "hdfs://192.168.0.212:8020/";String src = "/root/桌面/111.jpg";String dst = "/6.jpg";InputStream in = new BufferedInputStream(new FileInputStream(src));Configuration conf = new Configuration();FileSystem fs = File

在Window环境下多线程与CPU资源分配原则

首先强调一下是在windowNT环境下,linux是完全不同的效果,这取决于操作系统的CPU资源分配算法. 背景介绍: 如果有三个(或者更多)线程异步执行各自的算法(不知道是哪个SB写的算法,相当耗资源),那么这三个线程的CPU资源是如何分配的呢? 先上一段代码和效果图 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int i = 0; 6 while (i<30) 7 { 8 new Thread(new Paramet

Spring-IOC 在非 web 环境下优雅关闭容器

当我们设计一个程序时,依赖了Spring容器,然而并不需要spring的web环境时(Spring web环境已经提供了优雅关闭),即程序启动只需要启动Spring ApplicationContext即可,那我们如何去进行优雅关闭呢? 设计一个代理程序,仅需要Spring容器管理部分bean并启动即可.该工程最终打成一个可执行Jar包,并构建成docker镜像后进行启动 public class Main { public static void main(String[] args) thr

windows环境vagrant修改静态资源文件,centos虚拟机中nginx的web环境下不生效

最近上手krpano,本地修改了krpano.html文件或者xml文件,在虚拟机环境打开文件是修改过来了,在nginx中就是不生效. 修改nginx.conf中http{}中的 sendfile        on; 改成 sendfile        off;  修改后立刻生效. 附带一份nginx配置说明,备忘. ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总

Web环境下新增一个访问路径(虚拟路径)

在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加: <Context docBase="D:\develop\upload\temp" path="/pic" reloadable="false"/> 访问http://localhost:8080/pic即可访问D:\develop\upload\temp下的图片. 也可以通过eclipse配置,如下图: 复制一张图片到存放图片的文件夹,使用浏览

cocos2d-x js在web和jsb环境下的兼容性差异

最近一个项目,web下测试正常,在jsb环境下bug多多,记录解决方案以备后查 一.cc.PhysicsSprite创建的物理精灵在添加到layer后,移动layer,在jsb环境下贴图不随着layer移动而移动 解决方案:将创建PhysicsSprite的精灵贴图整合进一张大图中,使用SpriteBatchNode加载,将创建的sprite添加进SpriteBatchNode中 this.spriteSheet = new cc.SpriteBatchNode(res.sltq0_png);

多线程编程之Linux环境下的多线程(二)

上一篇文章中主要讲解了Linux环境下多线程的基本概念和特性,本文将说明Linux环境下多线程的同步方式. 在<UNIX环境高级编程>第二版的“第11章 线程”中,提到了三种基本的同步机制:互斥.读写锁.条件变量.下面分别针对这三种机制进行说明: 一.线程互斥 互斥意味着具有“排它性”,即两个线程不能同时进入被互斥保护的代码.Linux下可以通过pthread_mutex_t 定义互斥体机制完成多线程的互斥操作,该机制的作用是对某个需要互斥的部分,在进入时先得到互斥体,如果没有得到互斥体,表明