javaweb项目中使用全局静态变量问题

晓晓程序员 2012-08-05 09:30:14
我的项目是SSH2开发的。我在一个纯java类(叫Test.java)里定义了一个静态属性:public static int a=0;之后我在struts2的action里调用Test.a="用户请求传过来的值",这样按理说是所有用户的请求都可以改变这个静态变量a的值,但结果是在本地myeclipse里运用tomcat服务器不会出错,a的值会改变,但是把这个部署到真实项目上去(也是tomcat服务器)时就不行了,a值始终不对,貌似一直没赋起值。
...全文
649 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
晓晓程序员 2012-08-12
  • 打赏
  • 举报
回复
找到问题了。。O(∩_∩)O谢谢了各位!!
MiceRice 2012-08-06
  • 打赏
  • 举报
回复
生产环境就是指正式环境。。。。。。

因为生产环境不需要调试,也不需要动态部署这类能力,或者说怕有这类能力。
实际上生产环境连JSP编译检查都会关闭掉。
MiceRice 2012-08-05
  • 打赏
  • 举报
回复
用静态变量来传递用户请求?这个做法非常的有问题,这在并发环境下基本上是乱套的。

你说“a值始终不对”,是指a值一直都是0?还是a值一直都不是你期望的值?

如果是后者,那就正常,并发环境大家都来修改a值,乱七八糟是很正常的。
「已注销」 2012-08-05
  • 打赏
  • 举报
回复
服务器里打印一下看看到底赋上值没有啊,是不是用的人太多了 ,值变化的太快了的缘故啊
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
生产环境中,reloadable 和 autoDeploy 本来就应该是 false。
那在正式系统上reloadable 和 autoDeploy 是true?
我明天再去公司看看,仔细调试下,看看,谢谢大师的指点。
MiceRice 2012-08-05
  • 打赏
  • 举报
回复
似乎不应该是这个问题,因为:如果Tomcat不停的执行 reload,你的程序也没法正常用了,总是在彻底清掉环境,这系统自己都卡死球了。。。

我觉得问题本质不是在这里,除非你的应用其实本来就根本跑不起来。


顺带说一句:生产环境中,reloadable 和 autoDeploy 本来就应该是 false。
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
在myeclipse里调试不会出错,,就是部署到真实项目上就出错了,,,这里我看了一截信息:

而当执行完StandardContext的reload操作后,当被访问的请求代码中使用了log4j,logger会报空指针错误。根本原因是,StandardContext做reload操作时,其中一个步骤会调用WebappClassLoader的stop操作,而在WebappClassLoader的stop操作时,会根据变量ENABLE_CLEAR_REFERENCES的值(默认true),来清除static或者final变量的值,被清除后,再访问就自然会出错。
因此,
1,可以通过设置ENABLE_CLEAR_REFERENCES为false来解决这个问题(通过-Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES="false"来设置系统变量)
2,或者设置不进行重加载操作。context.xml中增加reloadable="false"属性
3,或者设置不进行自动Deploy操作。Host节中的autoDeploy="false"
4,Eclipse开发的话,Server属性中的把Automatically publish when resources chage改为Never publish automatically

所以我觉得可能是tomcat的问题,但我又不敢轻易改tomcat的这些配置信息,害怕会影响到其他的,会出现其他错误。
MiceRice 2012-08-05
  • 打赏
  • 举报
回复
我觉得不会是 public static int a 本身的问题。

只能是其它的地方存在误用,你可以专门写个JSP试试看:
<%
System.out.println(new Date() + " " + Test.a);
out.write(new Date() + " " + Test.a);
Test.a ++;
%>

刷新几次,然后看看别的地方是否能正确得到这个 Test.a
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
实在不行就只有保存到数据库中或保存到一个文本里了,,没法呀。。。哎,,session也不行的,我是要手机端得到这个值,手机无法得到服务器session的值。。
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
是呀,,我也感觉很奇怪。。是同一个JVM的同一个Web应用。
MiceRice 2012-08-05
  • 打赏
  • 举报
回复
听起来比较奇怪。。。都是同一个JVM的同一个Web应用么?
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
a值一直都是0,没有赋起值~~~~~~~
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
a值一直都是0
MiceRice 2012-08-05
  • 打赏
  • 举报
回复
不过楼主还是没回答我的问题。
晓晓程序员 2012-08-05
  • 打赏
  • 举报
回复
我要的就是所有用户共享这个值,所有人都可以改变这个值,所有人也可以得到改变的这个值,你们不用考虑并发问题,我非常清楚这个,我的需求是这样。。。
以下为视频源码目录: 一、Android入门介绍 视频教程 1.1 android系统介绍 1.2 android系统框架的介绍 1.3 如何搭建android开发环境 1.4 android生命周期的介绍 1.5 android使用全局变量传递数据 1.6 android使用剪切板传递数据 1.7 意图传递数据的第一种方式 1.8 android使用静态变量传递数据 1.9 意图返回结果 二、Android常用布局介绍 2.1 android常用布局属性的介绍 2.2 android线性布局的介绍 2.3 android框架布局的使用 2.4 相对布局的使用 2.5 表格布局的介绍 三、Android解析xml文件 3.1 android解析xml文件 3.2 android使用pull解析xml 3.3 android使用dom解析xml 四、Android之http协议编程 4.1 http协议的介绍 4.2 http协议GET方式获取图片 4.3 http使用Post方式进行提交数据 4.4 http使用apache工具类提交数据 五、 Android解析json数据 5.1 android解析json数据(一) 5.2 android解析json数据(二) 5.3 android使用gson解析 5.4 android使用fastjson解析 六、Android常用UI控件编程 6.1 TextView如何显示丰富的文本 6.2 TextView显示表情图像和文字 6.3 TextView单击链接弹出Activity 6.4 TextView实现跑马灯效果 6.5 EditText输入表情图像 6.6 EditText输入特定的字符 6.7 AutoCompleteTextView完成输入 6.8 Button按钮的焦点变化 6.9 Button图文混排的按钮 6.10 RadioButton单选按钮的使用 6.11 ToggleButton按钮的使用 6.12 CheckBox复选框控件使用 6.13 SeekBar拖动控件的使用 6.14 ImageView的基本用法 6.15 ImageView实现适屏和裁剪图片 6.16 ImageView实现图片旋转和缩放 6.17 ImageView从网络上获取图像 6.18 DatePicker输入日期控件的使用 6.19 时间对话框的使用 6.20 ProgressBar进度条的使用 6.21 RatingBar评分控件的使用 6.22 ScrollView垂直滚动控件的使用 6.23 HorizontalScrollView水平滚动 6.24 Gallery画廊控件 6.25 Spinner下拉列表控件 6.26 ImageSwitcher图片切换控件 6.27 GridView网格控件 6.28 TabHost卡片的使用 6.29 ViewStub惰性装载控件 6.30 ViewPager多页面滑动效果一 6.31 ViewPager多页面滑动效果二 6.32 ListView普通列表控件的使用 6.33 适配器结合ListView控件的使用 七、百度地图实战开发 7.1 百度地图搭建开发环境 7.2 百度地图覆盖物的描述 7.3 百度地图多个覆盖物的描述 7.4 根据范围和检索词发起范围检索 7.5 标注驾车路线搜索 7.6 标注行走路线搜索 7.7 公交换乘路线搜索 7.8 公交路线详情搜索 7.9 在一个地图上显示多条导航路线 7.10 经纬度和地址的转换 八、服务器端JDBC编程 8.1 jdbc框架介绍一 8.2 jdbc框架介绍二 九、服务器端Web编程 9.1 JavaWeb实现用户注册功能一 9.2 JavaWeb实现用户注册功能二 9.3 JavaWeb实现产品表维护一 9.4 JavaWeb实现产品表维护二 9.5 JavaWeb实现产品表维护三 9.6 JavaWeb实现产品表维护四 十、android存储数据和文件 10.1 android读写sdcard 10.2 SharedPreference共享参数 10.3 android操作数据库一 10.4 android操作数据库二 10.5 android操作数据库三 10.6 android操作数据库四 10.7 android操作数据库五 十一、android对话框介绍 11.1 对话框介绍一 11.2 对话框介绍二 11.3 对话框介绍三 11.4 对话框介绍四 十二、android通知的使用 12.1 通知的使用一 12.2 通知的使用二 十三、android菜单的使用 13.1 Android菜单Menu介绍一 13.2 Android菜单Menu介绍

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧