短信猫启动 用main 函数启动成功能发短信,在Tomcat 其他程序调用javax.comm.NoSuchPortException

闪电孩 2018-12-15 07:32:43
描述:短信猫启动 用main 函数启动成功能发短信,()
在Tomcat 中 其他程序调用 SMSServiceByOwn.getInstance().startService();
报错 Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import org.smslib.Message.MessageEncodings;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;



/**
* 描述:SMS Cat服务类
*/
public class SMSServiceByOwn {

/**
* 私有静态实例
*/
private static SMSServiceByOwn instance = null;

/**
* 是否开启服务
*/
private boolean isStartService = false;

/**
* 私有构造方法
*/

private SMSServiceByOwn() {
}

/**
* 获取实例(单例模式)
*
* @return
*/
public static SMSServiceByOwn getInstance() {
if (instance == null) {
instance = new SMSServiceByOwn();
}
return instance;
}

/**
* 开启短信服务
*
* @param path
* 配置文件路径
*/
public void startService() {
SerialModemGateway [] gateways = null;
System.out.println("开始初始化SMS服务!");

// 加载文件属性


// 初始化网关,参数信息依次为:COMID,COM号,比特率,制造商,Modem模式
gateways = new SerialModemGateway [1];

gateways[0] = new SerialModemGateway("modem.com57", "COM57", 115200, "wavecom", "11258");
gateways[0].setOutbound(true);
gateways[0].setInbound(false);
gateways[0].setSimPin("0000");


OutboundNotification outboundNotification = new OutboundNotification();

Service service = Service.getInstance();
if (service == null) {
System.out.println("初始化SMS服务失败!");
return;
}

service.setOutboundMessageNotification(outboundNotification);
try {


service.addGateway(gateways[0]);


// 开启服务
service.startService();
System.out.println("初始化SMS服务成功!");
isStartService = true;

} catch (Exception e) {
System.out.println("开启SMS服务异常:" + e.getMessage());
}
}

/**
* 停止SMS服务
*/
public void stopService() {
try {
Service.getInstance().stopService();
System.out.println("SMS服务关闭!");
} catch (Exception e) {
System.out.println("关闭SMS服务异常:" + e.getMessage());
}
isStartService = false;
}

/**
* 发送短信
*
* @param toNumber
* 手机号码
* @param message
* 短信内容
*/
public String sendMessage(String toNumber, String message) {
if (!isStartService) {
System.out.println("尚未开启SMS服务!");
return "fail";
}

// 封装信息
OutboundMessage msg = new OutboundMessage(toNumber, message);
msg.setEncoding(MessageEncodings.ENCUCS2);
try {
// 发送信息
Service.getInstance().sendMessage(msg);
} catch (Exception e) {
System.out.println("SMS服务发送信息发生异常:" + e.getMessage());
isStartService = false;
}

return "success" ;
}


public String sendMessage(List<String> Numbers, String message) {
if (!isStartService) {
System.out.println("尚未开启SMS服务!");
return "fail";
}
if (Numbers==null) {
System.out.println("目标手机号码为空!");
return "fail";
}
List<String> activityList = new ArrayList<String>();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String tempStrSta = df.format(new Date());// new Date()为获取当前系统时间
System.out.println("短信发送开始时间"+tempStrSta);
for(int i=0;i<Numbers.size();i++){
activityList.add(Numbers.get(i));

OutboundMessage msg = new OutboundMessage(Numbers.get(i), message);
msg.setEncoding(MessageEncodings.ENCUCS2);
try {
// 发送信息
Service.getInstance().sendMessage(msg);
} catch (Exception e) {
System.out.println("SMS服务发送信息发生异常:" + e.getMessage());
isStartService = false;
return "fail";
}
activityList.clear();
System.out.println("发送短信"+Numbers.get(i)+""+message+"");

}
String tempStrEnd = df.format(new Date());// new Date()为获取当前系统时间
System.out.println("短信发送结束时间"+tempStrEnd+"发送"+Numbers.size()+"条");
return "success" ;
// 封装信息

}
public static void main(String[] args) {
SMSServiceByOwn.getInstance().startService();
List<String> phoneList = new ArrayList<String> ();
phoneList.add("15561351200");

for(int i = 0;i<1;i++)
SMSServiceByOwn.getInstance().sendMessage(phoneList, "SMS Boom Message!!!");
//没必要的时候没停止服务,因为端口占用着
SMSServiceByOwn.getInstance().stopService();
}


}
...全文
133 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
进击丶Saber 2018-12-17
  • 打赏
  • 举报
回复
是否开启服务设置成true?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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