Java org.smslib端口正在使用异常

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.

我正在尝试创建web应用程序,通过JSP中的gsm调制解调器发送sms。首先,我将目标手机号码和sms文本放入url中,并通过请求获取。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)
我试图停止网关和停止服务,但没有希望 我的代码:


代码中的问题是,每次发出请求时,都会创建一个新的
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;
    }
    }