ssh web 应用使用c3p0数据库连接池
ibm 给出的实例说明 将ssh web应用程序从tomcat迁移到websphere(was)
WAS 中数据源的配置使用及其常见问题
开源DBCP、C3P0、Proxool 、 BoneCP连接池的比较

QuartzJob 类:创建job类,实现org.quartz.job接口类,并实现execute方法。

QuartzCronTrigger 类:创建crontrigger类,继承CronTrigger类,实现 Serializable接口

QuartzMain 类
1、如果Scheduler没有设置名称,通过scheduler = factory.getDefaultScheduler();获取的Scheduler对象名称为DefaultQuartzScheduler。
2、Quartz可以设置一个Scheduler,然后在这个Scheduler下配置多对trigger和job度对象。

 

hql语句是区分大小写的。
查询时候表名必须和实体类(po)相同,而查询的字段必须和实体类的属性名相同(而不是数据库的字段名)。
hql是面向对象的查询语句。
注意:在hql模糊查询中,在“%”的两旁要加上单引号,eg: LIKE ‘%value%’,否则会出错。
包含where子句的查询,使用”where 1=1″,如果后面的查询条件都不符合,会保证语法的正确性。
包含in子句的查询,使用”in(”, …)”,如果没有其他限定范围,同样也会保证语法的正确性。
在hql语句中“=”后面为string类型时,应写成 =’xxxx’ 形式,否则hql语句会报错。
在hql语句中escape ‘X’,会将 X 出现之后的字符视为非特殊字符。
在hql模糊查询中包含“”和“%”特殊字符,进行查询 1)“”替换为“/” like ‘%/..%’ espase ‘/’; 2)“%”替换为“/%” like ‘%/%..%’ espase ‘/’;

在shell编程时要注意一下几点:

赋值时“=”两边不能有空格。
测试条件[],在方括号内容的两侧都要加上空格。
echo 后的内容,系统一般都会认为为字符串。

在本次的开发中,我们程序总是报内存溢出异常,后经过很长时间才分析出原因。发现后,感觉这是个十足的低级错误,现在写出来供大家阅读,以免再犯类似错误。
事件是这样的: 我的一个位同事为了获得表中数据的条数。通过hql语句,将数据库中所有数据查询出来,并将所有查询结果集放到一个list中。在开始使用的时候没有发现有什么问题。但是当数量上万以后,一运行程序就会立即报错–OutOfMemeryException。
估计讲到这里大家应该都明白怎么回事了。这个错误实在是太低级了。原本使用count就能解决的问题,他偏要将使用list.size获取数据条数。
总之,警示,误再犯此低级错了

spring主动注入,类似每次调用new一个对象

页面调用:

spring配置:

 

原因:数据库连接超时造成,
解决:
方法1、修改mysql数据库wait_timeout配置属性,将mysql数据库连接时间增长。

方法2、修改Hibernate配置

 

前言:
最近这三个月,我们组(3个组员,1个组长)在公司接了一个项目。”运维监控系统“ — 对公司各省份的服务器进行巡检、监控操作。这个项目可以说是我到这公司的“处女”作。所以在需求、设计、开发、测试阶段我都格外用心,想尽量做到更好。在项目的开发和设计阶段组长还有时间管我们,并时不时帮我们看看,并管理项目的进度。但是到了后期开发由于他个人又接了一个项目,就没有时间顾及我们这三个“菜鸟”了。
这样一来,反而我发现,在后期没有“老大”管理的日子里(开发和测试阶段),我们三个“菜鸟”成长的飞快。为什么这么说呢?因为这时遇到的问题,只能我们三个商量解决。具体的测试计划以及测试进度、测试环境的搭建,以及与测试组之间的对外沟通,我们都必须自己处理。这期间我们遇到了各种问题。以下是各阶段,自己总结的一些经验,有不对之处,勿喷。
设计:
1、数据库的设计可以有千万种,但一定要选择最有利于开发,便于实现的,并且存储效率较高的方案。
2、没有“天衣无缝”的设计,再好的设计在开发阶段也会出现问题。因为唯有在编码的时候,才会发现设计上一些潜在缺陷,所在设计阶段不要过去追求完美。
开发:
1、当所开发模块要与别人进行合并,或者别要调用你的模块时,这时候你一定要和他确定好他的需求,并且考虑此处可能出现的各种问题,因为很多bug都是出现在俩人交叉开发代码间。 a、传递/接受 参数个数、格式、顺序; b、数据传递会不会出现异步情况,要怎么避免;
2、每天下班前或者是完成一个模块后,都要把自己确定无误的代码提交至svn。注意一定是自己确定没有问题的代码。不然会因为你的异常代码导致他人无法调试,影响团队的开发进度,而且还会给自带来无尽麻烦。
3、开发时要注意细节,就可因为你在开发上的一个变量,没有考虑到数据量大了以后会出现什么问题(例:list的存储数据过大导致内存溢出等),没有考虑并发量高可能会引发的问题(例:变量值被覆盖,线程对同文件调用死锁等)。
测试:
1、前期要让测试人员逐个模块功能测起。
2、压测要等到最后,确保系统各模块都没有问题了才能开始。要不然中途开始压测,各种问题都会跑出来。具体是什么原因都不好分析。
3、测试中遇到问题,不管测试人员多么催你修改bug,不管后边有抛出多少个bug。都一定要静下心来,耐心根据异常信息,查找问题出现的根源。其实答案就在抛出才异常信息中,只要静下心来一定能找到原因。
4、对于那种非常规的bug,你可以根据测试用例,错误日志生时间,以及bug出现的频率(时间)。找出规律,设法定位到自己认为有误的代码。

在最近的项目中,有个地方我们不得不实用getBean的方法,自己从Spring context中获取bean进行数据库操作。
方法一(效率低,极易出现bug,不推荐使用):
刚刚开始的时候,我们使用这中方式,但是在应用过程中发现此方式效率低下,而且极易出现bug。 在我们系统中会生成ehcache_auto_created_时间戳文件夹,

 

所以我google了一下,改用其他方法。
方法二(效率高,灵活性高,可复用,推荐使用): 创建一个工具类SpringContextsUtil ,通过实现Spring中的ApplicationContextAware接口,在applicationContext.xml中注入bean后Spring会自动调用setApplicationContext方法。此时我们就可以获取到Spring context。

调用方法:

注:
1、使用时会出现无法获取applicationContext,并抛出NullPointerException。

原因:使用此方法必须在spring applicationContext.xml中注入bean。否则spring无法自动调用setApplicationContext。如下

2、如果注入后仍然出现这个问题。 则修改中的default-lazy-init=”false”。 或者是修改bean注入属性