首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读82次
20080424 Application Lock ApplicationContext spring

20080424 Application Lock ApplicationContext spring
http://www.shengfang.org


Application的Lock问题。
原因
嵌入到 Application.Lock 和 Application.UnLock 方法中代码提供多用户环境中保护。 访问 Application 对象时随着是 COM +, 引入 Internet Information Server (IIS) 5.0 利用是线程 Neutral Apartment (NA)。 当您明确调用 Application.Lock 和从 Application.UnLock 组件, 内会因此, 某些情况下您可能遇到死锁情况导致服务器停止响应。 当内部 ASP 函数是整理来回 IIS 服务器和 COM+ 应用程序服务器之间是最常发生此问题。 以下两种方案可能导致服务器到挂起:
• 当您调试 MicrosoftVisualBasic 组件从 VisualBasic 集成开发 Envrionment (IDE)。
• 当您调用组件, 作为在 COM+ 服务器应用程序运行。

解决方案
Application.Lock 和 Application.UnLock 方法不需要分配单个 Application 变量因为内部调用方法。

如果您需要从组件, 分配同一 Application.Lock 和 Application.UnLock 方法中多 Application 变量组件必须与调用方, 在同一进程中运行或必须修改您逻辑以只包含一个赋值。 例如, 以下代码

Application.Lock
Application("myvar1") = "hello"
Application("myvar2") = "world"
Application.UnLock
    

可能被修改以解决此问题如下:

Dim array(1)
array(0) = "hello"
array(1) = "world"
Application("myvar") = array
    

    Lock 方法阻止其他客户修改存储在 Application 对象中的变量,以确保在同一时刻仅有一个客户可修改和存取 Application 变量。如果用户没有明确调用 Unlock 方法,则服务器将在 .asp 文件结束或超时后即解除对 Application 对象的锁定。
语法

Application.Lock
 

示例

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>
 
This application page has been visited
<%= Application("NumVisits") %>  times!

在前面的示例中,Lock 方法保护变量 NumVisits 在同一时刻不被多个客户所访问。如果应用程序未被锁定,则两个客户就可以同时增加变量 NumVisits 的值。

应用程序需要小心使用复杂对象,例如,集合.集合没有被设计为供多线程同时访问.

利用方法Synchronized()创建集合对象线程安全版本

SortedList ApplicationValue =new SortedList();

ApplicationValue.Add("1","a");

ApplicationValue.Add("2","b");

ApplicationValue.Add("3","c");

ApplicationValue=SortedList.Synchronized(ApplicationValue);

package com.test;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;

public class SpringMain {

 /**
  * at param args
  */
 public static void main(String[] args) {
  SpringBean bean = null;
  XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext dot xml"));
  bean = (SpringBean)factory.getBean("test1");
  bean.sayHello();
  
  ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
  bean = (SpringBean)act.getBean("test1");
  bean.sayHello();
  
  factory = new XmlBeanFactory(new FileSystemResource("F:\\ccc\\workspace_zuhe\\Test\\src\\applicationContext.xml"));
  bean = (SpringBean)factory.getBean("test1");
  bean.sayHello();
  }

}


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/20080424ApplicationLockApplicationContextspring.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1232070726

2009年1月16日09:52星期五  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 8||用户: 2562 [列表]
今日:294||到访:2669793
Rss:837885||评论:1584

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8