呵呵,不好意思,搞错了,可能是本地起了多个接收的长连接导致的,我把longsmsbuffer改成static变量试试。 ^_^
if (curstat == 0) {
return;
} else if (curstat == 1) {
this.deliverbuffer.add(longsmsbuffer.get(dm.SrcTermID)
.MergeDeliver());
longsmsbuffer.remove(dm.SrcTermID);
} else if (curstat == -1) {
DeliverMessage[] tmpdeliver = longsmsbuffer.get(
dm.SrcTermID).popDeliver();
for (int i = 0; i < tmpdeliver.length; i++) {
this.deliverbuffer.add(tmpdeliver[i]);
}
longsmsbuffer.put(dm.SrcTermID, new LongDeliver(dm));
}
} else {
longsmsbuffer.put(dm.SrcTermID, new LongDeliver(dm));
}
return;
}
}
......
private boolean CheckLongSmsOverTime(int second) {
synchronized (longsmsbuffer) {
Iterator spit = longsmsbuffer.keySet().iterator();
// System.out.println("检查是否有长短信被执行");
while (spit.hasNext()) {
DeliverMessage[] tmpDeliverMsg;
String key = "";
if ((tmpDeliverMsg = longsmsbuffer.get(
(key = (String) spit.next())).CheckIfOverTime(second)) != null)
{
for (int i = 0; i < tmpDeliverMsg.length; i++) {
this.deliverbuffer.add(tmpDeliverMsg[i]);
}
longsmsbuffer.remove(key);
return true;
}
}
return false;
}
}
On 1月28日, 上午11时03分, yong guo <yong.guo...@gmail.com> wrote:
> 连接池是采用Apache的PoolableObjectFactory对象池实现的
public static byte[] toUCS2Byte(byte[] content) {
byte[] bt_content = null;
byte[] byte1;
try {
String str_content = new String(content);
// System.out.println("MsgContentUtil : "+str_content);
byte1 = str_content.getBytes("UTF-16");
int len = byte1.length - 2;
bt_content = new byte[len];
for (int i = 0; i < len; i++)
bt_content[i] = byte1[i + 2];
} catch (UnsupportedEncodingException e) {
bt_content = null;
e.printStackTrace();
}
return bt_content;
}