资源文件加载:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config/ms/jdbc.properties</value>
<value>classpath:config/ms/ms.properties</value>
<value>classpath:config/ms/warn.properties</value>
<value>classpath:config/ms/status.properties</value>
</list>
</property>
</bean>
<bean id="reloadableResource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<set>
<value>/WEB-INF/classes/config/ms/ms</value>
</set>
</property>
<property name="cacheSeconds" value="50" />
</bean>
dbcp连接池:
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName(this.getDriverClass());
bds.setUrl(this.getUrl());
bds.setUsername(this.getUsername());
bds.setPassword(this.password);
bds.setMaxWait(Integer.valueOf(maxWait).intValue());
bds.setMaxActive(Integer.valueOf(maxActive).intValue());
bds.setMaxIdle(Integer.valueOf(maxIdle).intValue());
bds.setMinIdle(Integer.valueOf(minIdle).intValue());
bds.setInitialSize(Integer.valueOf(initialSize).intValue());
bds.setRemoveAbandoned(true);
bds.setRemoveAbandonedTimeout(30);
bds.setLogAbandoned(false);
return bds;
连接池:
//创建一个固定大小的线程,使用优先级队列
// pool = new ThreadPoolExecutor(10, 10, 0, TimeUnit.SECONDS, new PriorityBlockingQueue(30),
// new ThreadPoolExecutor.CallerRunsPolicy());
//采用无堵塞先进先出队列
pool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, 0, TimeUnit.SECONDS,
new ArrayBlockingQueue(workQueue, true), new ThreadPoolExecutor.CallerRunsPolicy());
public int process(List moConmmandList)
{
while (pool.getQueue().size() > maxQueueSize - 1)
{
try
{
Thread.currentThread().sleep(50);
}
catch (InterruptedException e)
{
logger.error("循环等待上行处理线程池任务队列失败", e);
return -1;
}
}
for (int i = 0; i < moConmmandList.size(); i++ )
{
//组装成任务
Runnable inierUpSMS = transformToPoolTask((MoItem)moConmmandList.get(i));
if (inierUpSMS != null)
{
pool.execute(inierUpSMS);
}
else
{
logger.debug( ((MoItem)moConmmandList.get(i - 1)).toString());
continue;
}
}
return 0;
}
private Runnable transformToPoolTask(MoItem moItem)
{
UpSMS inierUpSMS = (UpSMS)upSMS.clone();
inierUpSMS.setMoItem(moItem);
return inierUpSMS;
}
public class UpSMS implements Cloneable, Runnable
/**
* Description: 重写克隆方法<br>
*/
public Object clone()
{
try
{
ParseXMLV3 parseXML_clone = (ParseXMLV3) parseXML.clone();
UpSMS upsms = (UpSMS) super.clone();
upsms.setParseXML(parseXML_clone);
return upsms;
}
catch (CloneNotSupportedException e)
{
logger.error("克隆点播指令解析类异常。", e);
return null;
}
}
资源文件重加载:
<bean id="resourceUtil" class="com.huawei.taskengine.comm.util.ResourceUtil">
<property name="reloadableResource">
<ref bean="reloadableResource"/>
</property>
<property name="mspUpGather_Fast">
<ref bean="mspUpGather_Fast"/>
</property>
<property name="siDataTools">
<ref bean="siDataTools"/>
</property>
</bean>