0

JSPでgsmモデムでSMSを送信するWebアプリケーションを作成しようとしています最初に、宛先の携帯電話番号とSMSテキストをURLに入力し、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;
    }
    }
4

3 に答える 3

1

コードの問題は、リクエストが行われるたびに新しいSerialModemGatewayものが作成されることです。これは行うべきではありません。

SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM12", 9600, "Huawie", "EF200");リクエストが行われるたびにではなく、アプリケーションが実行されたときにのみステートメントが呼び出されるようにしてください。

于 2012-09-24T09:36:26.393 に答える
1

コードの最後の部分でこれを試してみてService.getInstance().stopService()ください。プログラムを終了してから再度実行することもできます

于 2013-05-07T05:49:09.490 に答える
0

私はこの問題を解決しました Service.getInstance().removeGateway(gateway);

于 2015-06-20T06:15:54.850 に答える