Java org.smslib端口正在使用异常
我正在尝试创建web应用程序,通过JSP中的gsm调制解调器发送sms。首先,我将目标手机号码和sms文本放入url中,并通过请求获取。getparameter和发送的第一条消息没有问题,但当通过引用同一页面再次发送消息时,我收到此异常:Java org.smslib端口正在使用异常,java,jsp,sms,sms-gateway,Java,Jsp,Sms,Sms Gateway,我正在尝试创建web应用程序,通过JSP中的gsm调制解调器发送sms。首先,我将目标手机号码和sms文本放入url中,并通过请求获取。getparameter和发送的第一条消息没有问题,但当通过引用同一页面再次发送消息时,我收到此异常: org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: gnu.io.PortInUseException: org.smslib at org.
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)
我试图停止网关和停止服务,但没有希望
我的代码:
代码中的问题是,每次发出请求时,都会创建一个新的
SerialModemGateway
,这不应该执行
尝试使用
SerialModemGateway网关=新的SerialModemGateway(“modem.com1”、“COM12”、9600、“Huawie”、“EF200”)代码>语句只在应用程序运行时调用,而不是每次发出请求时调用。在最后一段代码中尝试此服务。getInstance().stopService()
可以正常工作,您也可以在再次运行程序之前终止程序。我用
Service.getInstance().removeGateway(网关)代码>如果我在类中将SerialModemGateway的定义更改为static,它会解决问题吗?只需将其置于方法之外,使其静态或非静态将起到相同的作用,还有一件事需要调用gateway.stopGateway()代码>或会话过期时的其他流关闭操作。
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;
}
}