我正在尝试创建网络应用程序来发送短信通过gsm调制解调器在JSP首先我把目标手机号码和短信文本在网址和获取request.getparameter和第一条消息发送没有问题,但当再次发送一条消息通过参考同一页我得到这个异常:
org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: gnu.io.PortInUseException: org.smslib
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:102)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
at org.smslib.Service$1Starter.run(Service.java:276)我试图停止网关和服务,但我的代码没有希望:
public boolean sendMessage(String strMobileNo,String strSMSText)
{
try
{
OutboundMessage outboundMessage=new OutboundMessage();
SMS message=new SMS();
SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM12", 9600, "Huawie", "EF200");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("0000");
gateway.setSmscNumber("+9647701144010");
Service.getInstance().setOutboundMessageNotification(message);
Service.getInstance().addGateway(gateway);
Service.getInstance().startService();
outboundMessage.setText(strSMSText);
outboundMessage.setRecipient(strMobileNo);
outboundMessage.setEncoding(Message.MessageEncodings.ENCUCS2);
//outboundMessage.setDeliveryDelay(5000);
Service.getInstance().sendMessage(outboundMessage);
System.out.println(outboundMessage);
gateway.stopGateway();
Service.getInstance().stopService();
Thread.sleep(10000);
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}发布于 2012-09-24 17:36:26
代码中的问题是每次发出请求时都会创建一个新的SerialModemGateway,这是不应该做的。
尽量让SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM12", 9600, "Huawie", "EF200");语句只在应用程序运行时调用一次,而不是每次请求都调用。
发布于 2013-05-07 13:49:09
在你最后运行的代码中试用这个Service.getInstance().stopService(),你也可以在再次运行它之前终止你的程序
发布于 2015-06-20 14:15:55
我用Service.getInstance().removeGateway(gateway);解决了这个问题
https://stackoverflow.com/questions/12562141
复制相似问题