用短信猫实现短信发送,异常。。。

yezi1305 2011-04-15 11:19:51
我们的系统需要接收和发送短信功能,用了GSM Modem,就是插手机卡那个猫。

我的实现方式:把要发送的短信存放在定时任务的队列里。按队列先后进行发送。每隔几秒刷新一下页面状态看是否执行成功。基本上运行是正常的,但有时候客户会反映短信发不出去,重启tomcat服务后发送不出去的短信也仍发不出去,但新的短信可以发出去。
查看日志发现有以下异常:
INFO - Exec: getPhrase.sendState()
Mobile Device Information:
Manufacturer : WAVECOM MODEM
Model : MULTIBAND 900E 1800
Serial No : 012345678901234
IMSI : 460028532994139
S/W Version : 641b09gg.Q2403A 1320676 061804 14:38
Battery Level : 0%
Signal Level : 90%
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at org.jsmsengine.COutgoingMessage.getPDU(COutgoingMessage.java:137)
at org.jsmsengine.CService.sendMessage(CService.java:985)
at org.jsmsengine.CService.sendMessage(CService.java:885)
at cn.com.utils.timer.SendMessage.sendMessage(SendMessage.java:73)
at cn.com.utils.timer.SendMsgRunTask.run(SendMsgRunTask.java:75)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Message Failed!

想问一下各位,
1、这个异常是不是代表短信猫中的短信已经满了,还是我的程序字符串读取有问题。【因为是我程序中创建消息实例时出错的。COutgoingMessage msg = new COutgoingMessage(tel,content);】
2、短信猫读取短信除了放到队列中执行,还有没有其他的解决办法?
3、我跟踪程序发现有时候定义的定时任务没有执行,不知道你们有没有遇到过这种情况?


非常感谢!!!
...全文
516 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luobouu 2012-07-10
  • 打赏
  • 举报
回复
解决了没有啊?我也是这个问题
yezi1305 2011-05-31
  • 打赏
  • 举报
回复
楼上说的即是!
我们公司买的盈科短信猫,我也不能确定用的这个短信猫好不好,不过给他们打电话当初提供的接口好像没有java的,他们也是从网上找的一个开源的代码测了一下就发给我们了。我也很无语。

这种堵塞情况不是经常发生。经过询问同事,他说我这种情况有可能是com口堵塞,(一个队列的短信还没发完,下一条短信又来了。)一条短信的发送时间在3-6秒左右,因此队列中所有短信集合在一起的时间必须小于5分钟,这样才能保证发送质量。但是现在客户那里是一次就要发送99条短信,设定的5秒发送一次,这样至少得需要8、9分钟。。 我原来没有从数据库中读数据放到队列中而是有短信请求就放在队列中, 不知道是不是这个问题。

我现在把程序修改了一下,改成:5分钟读取一次数据库,紧接着就填充到队列当中,然后依次发送。但是测的时候发送一条时正常,以后的连接短信猫的状态都是-11,链接失败. 没找出啥原因,正在郁闷当中,还在测试。。。
slio2008 2011-05-25
  • 打赏
  • 举报
回复

不好意思,一直没重复跟贴的习惯,所以也没看到你的回复。
第2个问题 有2种可能:
1: 你程序多线程没做好。
2:短信猫本身的问题

第二种可能性问题很大,在确定你程序代码没问题的情况下,多和短信猫厂家技术联系联系。你是购买的,他们有义务提供售后服务。。

短信返回状态,是得不到用户手机终端返回的状态,但能得到运营商返回的状态, 能知道短信是否提交到了运营商短信网关

不知道楼主买的什么短信猫
买东西 还是买成熟,完善的产品好,三教九流的东西,买来很不省心,还经常无形的付出了多余的成本



yezi1305 2011-04-28
  • 打赏
  • 举报
回复
非常感谢楼上的回复!!!
第1个异常我已经解决了,确实是字符串读取有问题,多循环了一次,⊙﹏⊙b汗
第3个问题好像也不是问题,不会出现
现在主要是第2个问题,短信猫收发短信是不是只能是一条一条串行读取,如果发送多条,其中有一条发不出去,短信猫好像就堵死了似的,以后的短信也发不出去了,除非重启短信猫,这种情况应该怎么办,怎么处理才能保证发送正常啊?头疼中~~~~我看了接口文档,没有短信返回状态。
slio2008 2011-04-15
  • 打赏
  • 举报
回复


初步看 应该是字符串过长的问题

你的短信猫厂商 提供接口文档了吧,你把用户的短信存到数据库,
然后开线程 每几秒取100条,通过短信猫接口函数发出去


81,094

社区成员

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

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