Java 在jsmpp中创建单个连接而不是多个连接

Java 在jsmpp中创建单个连接而不是多个连接,java,jsmpp,Java,Jsmpp,我正在使用JSMPP我已连接到smsc,我正在尝试发送消息并尝试接收送货收据 我面临一个问题,我只想创建一个连接。如果你能帮我,那就太好了。我的代码是: package com.jsmpp.dialerintegration; public class SenderToMsgBroker{ public String sendingSms(String [] mobileNo) { String [] receiverMobileNo = mobileNo; Stri

我正在使用
JSMPP
我已连接到
smsc
,我正在尝试发送消息并尝试接收送货收据

我面临一个问题,我只想创建一个连接。如果你能帮我,那就太好了。我的代码是:

package com.jsmpp.dialerintegration;
public class SenderToMsgBroker{ 

public  String  sendingSms(String [] mobileNo) {  
    String [] receiverMobileNo = mobileNo;
    String blankMSG="";

    SMPPSession session = new SMPPSession();

    try{

         session.connectAndBind("ip", port,
                new BindParameter(BindType.BIND_TRX, "username", "password",
                        "cp", TypeOfNumber.UNKNOWN,
                        NumberingPlanIndicator.UNKNOWN, null),1000*60*30,session);
        System.out.println("Connection Established And SessionId :"+session.getSessionId());
        System.out.println("SessionState"+session.getSessionState());

        }
      catch (IOException e) {
        System.err.println("Failed connect and bind to host");
        e.printStackTrace();
    }

    try {


        for(int i=0;i<receiverMobileNo.length;i++)
        {   


        session.setMessageReceiverListener(new MessageReceiverListenerImpl());  

        System.out.println("Trying to send the message->>>");
        String messageId = session
                .submitShortMessage(
                        null,
                        TypeOfNumber.UNKNOWN,
                        NumberingPlanIndicator.UNKNOWN,
                        "51633",
                        TypeOfNumber.UNKNOWN,
                        NumberingPlanIndicator.UNKNOWN,
                        receiverMobileNo[i],
                        new ESMClass(),
                        (byte) 0,
                        (byte) 1,
                        null,
                        null,
                        new RegisteredDelivery(
                                SMSCDeliveryReceipt.SUCCESS_FAILURE),
                        (byte) 0,
                        new GeneralDataCoding((byte) 0xc0),
                        (byte) 0,blankMSG.getBytes());
        System.out.println("Message submitted, message_id is " + messageId);
        System.out.println("Message Receiver Mobile No is :"
                + receiverMobileNo[i]);


        }

    } catch (PDUException e) {
        // Invalid PDU parameter
        System.err.println("Invalid PDU parameter");

        e.printStackTrace();

        return "PDUException";
    } catch (ResponseTimeoutException e) {
        // Response timeout
        System.err.println("Response timeout");
        e.printStackTrace();
        return "ResponseTimeoutException";
    } catch (InvalidResponseException e) {
        // Invalid response
        System.err.println("Receive invalid respose");
        e.printStackTrace();
        return "InvalidResponseException";
    } catch (NegativeResponseException e) {
        // Receiving negative response (non-zero command_status)
        System.err.println("Receive negative response");
        e.printStackTrace();
        return "NegativeResponseException";
    } catch (IOException e) {
        System.err.println("IO error occur");
        e.printStackTrace();
    }
    catch (Exception e) {
         System.err.println("Exeption Occur");
         e.printStackTrace();
         return "Eror"; 
    }


    return "Success"; 
}

}
package com.jsmpp.dialerintegration;
公共类发送者ToMsgBroker{
公共字符串发送消息(字符串[]mobileNo){
字符串[]receiverMobileNo=mobileNo;
字符串blankMSG=“”;
SMPPSession session=新SMPPSession();
试一试{
会话.connectAndBind(“ip”,端口,
新的BindParameter(BindType.BIND_TRX,“用户名”、“密码”,
“cp”,编号的类型未知,
NumberingPlanIndicator.UNKNOWN,null),1000*60*30,会话);
System.out.println(“已建立连接并会话ID:+session.getSessionId());
System.out.println(“SessionState”+session.getSessionState());
}
捕获(IOE异常){
System.err.println(“连接并绑定到主机失败”);
e、 printStackTrace();
}
试一试{

对于(int i=0;i将SmppSession对象作为实例变量移动,以便会话对象持续存在

package com.jsmpp.dialerintegration;
public class SenderToMsgBroker{ 

private SMPPSession session;

private SMPPSession getSmppSesssion()
{
if(null != session && 
    session.getSessionState().isBound())
{
    return session;
}

 session = new SMPPSession();
try{

     session.connectAndBind("ip", port,
            new BindParameter(BindType.BIND_TRX, "username", "password",
                    "cp", TypeOfNumber.UNKNOWN,
                    NumberingPlanIndicator.UNKNOWN, null),1000*60*30,session);
    System.out.println("Connection Established And SessionId                 :"+session.getSessionId());
    System.out.println("SessionState"+session.getSessionState());

    }
  catch (IOException e) {
    System.err.println("Failed connect and bind to host");
    e.printStackTrace();
}

}

public  String  sendingSms(String [] mobileNo) {  
String [] receiverMobileNo = mobileNo;
String blankMSG="";

SMPPSession session = getSmppSession();

try {


    for(int i=0;i<receiverMobileNo.length;i++)
    {   


    session.setMessageReceiverListener(new MessageReceiverListenerImpl());  

    System.out.println("Trying to send the message->>>");
    String messageId = session
            .submitShortMessage(
                    null,
                    TypeOfNumber.UNKNOWN,
                    NumberingPlanIndicator.UNKNOWN,
                    "51633",
                    TypeOfNumber.UNKNOWN,
                    NumberingPlanIndicator.UNKNOWN,
                    receiverMobileNo[i],
                    new ESMClass(),
                    (byte) 0,
                    (byte) 1,
                    null,
                    null,
                    new RegisteredDelivery(
                            SMSCDeliveryReceipt.SUCCESS_FAILURE),
                    (byte) 0,
                    new GeneralDataCoding((byte) 0xc0),
                    (byte) 0,blankMSG.getBytes());
    System.out.println("Message submitted, message_id is " + messageId);
    System.out.println("Message Receiver Mobile No is :"
            + receiverMobileNo[i]);


    }

} catch (PDUException e) {
    // Invalid PDU parameter
    System.err.println("Invalid PDU parameter");

    e.printStackTrace();

    return "PDUException";
} catch (ResponseTimeoutException e) {
    // Response timeout
    System.err.println("Response timeout");
    e.printStackTrace();
    return "ResponseTimeoutException";
} catch (InvalidResponseException e) {
    // Invalid response
    System.err.println("Receive invalid respose");
    e.printStackTrace();
    return "InvalidResponseException";
} catch (NegativeResponseException e) {
    // Receiving negative response (non-zero command_status)
    System.err.println("Receive negative response");
    e.printStackTrace();
    return "NegativeResponseException";
} catch (IOException e) {
    System.err.println("IO error occur");
    e.printStackTrace();
}
catch (Exception e) {
     System.err.println("Exeption Occur");
     e.printStackTrace();
     return "Eror"; 
}


return "Success"; 
}

}
package com.jsmpp.dialerintegration;
公共类发送者ToMsgBroker{
非公开会议;
私有SMPPSession getSMPPSesson()
{
if(null!=会话&&
session.getSessionState().isBound())
{
返回会议;
}
会话=新SMPPSession();
试一试{
会话.connectAndBind(“ip”,端口,
新的BindParameter(BindType.BIND_TRX,“用户名”、“密码”,
“cp”,编号的类型未知,
NumberingPlanIndicator.UNKNOWN,null),1000*60*30,会话);
System.out.println(“已建立连接并会话ID:+session.getSessionId());
System.out.println(“SessionState”+session.getSessionState());
}
捕获(IOE异常){
System.err.println(“连接并绑定到主机失败”);
e、 printStackTrace();
}
}
公共字符串发送消息(字符串[]mobileNo){
字符串[]receiverMobileNo=mobileNo;
字符串blankMSG=“”;
SMPPSession session=getSmppSession();
试一试{

对于(inti=0;i您必须创建一个全局静态SMPPSession变量,如下所示

public class ConfigAndBind {

public static SMPPSession session= new SMPPSession();;
public  void bind() {
    //String server = Utilities.ipAddress;
   // int port = Utilities.port;
   // session =
    session.setMessageReceiverListener(new MessageReceiverListenerImpl());
    try {
        session.connectAndBind("ip",6543, new BindParameter(BindType.BIND_TRX, "systemid", "password", "cp", TypeOfNumber.UNKNOWN, NumberingPlanIndicator.UNKNOWN, null));
    } catch (IOException e) {
        System.err.println("Failed connect and bind to host");
        e.printStackTrace();
    }
    BasicConfigurator.configure();

}

public void unbind() {
     session.unbindAndClose();

     System.out.println("finish!");
}
public static SMPPSession getSession() {
    return session;
}
}



public class MessageReceiverListenerImpl implements MessageReceiverListener {

@Override
public DataSmResult onAcceptDataSm(DataSm arg0, Session arg1)
        throws ProcessRequestException {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onAcceptAlertNotification(AlertNotification arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onAcceptDeliverSm(DeliverSm deliverSm)
        throws ProcessRequestException {
    // TODO Auto-generated method stub
    if (MessageType.SMSC_DEL_RECEIPT.containedIn(deliverSm.getEsmClass())) {
        try {
            DeliveryReceipt delReceipt = deliverSm.getShortMessageAsDeliveryReceipt();      
            System.out.println("received '" + delReceipt.getId() + "' : " + delReceipt);
        } catch (InvalidDeliveryReceiptException e) {
            System.err.println("receive faild");
            e.printStackTrace();
        }
    } else {
            System.out.println("Receiving message : " + new String(deliverSm.getShortMessage())); 
    }

}
}


public class SendSms {

private SMPPSession session;
private TimeFormatter timeFormatter = new AbsoluteTimeFormatter();

public void sendSms(String message,String msisdn) {
    session = ConfigAndBind.getSession();
    long TEN_SECONDS=10000;//millisecs

    Calendar date = Calendar.getInstance();
    long t= date.getTimeInMillis();
    Date scheduleDeliveryTime=new Date(t + (   TEN_SECONDS));


    try {
        String messageId = session.submitShortMessage("CMT", TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.ISDN, "6161", 
                TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.ISDN, msisdn, new ESMClass(), (byte)0, (byte)1, 
                timeFormatter.format(scheduleDeliveryTime), null, new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE), 
                (byte)0, DataCodings.ZERO, (byte)0, message.getBytes());

        System.out.println("Message submitted, message_id is " + messageId);

    } catch (PDUException e) {
        // Invalid PDU parameter
        System.err.println("Invalid PDU parameter");
        e.printStackTrace();
    } catch (ResponseTimeoutException e) {
        // Response timeout
        System.err.println("Response timeout");
        e.printStackTrace();
    } catch (InvalidResponseException e) {
        // Invalid response
        System.err.println("Receive invalid respose");
        e.printStackTrace();
    } catch (NegativeResponseException e) {
        // Receiving negative response (non-zero command_status)
        System.err.println("Receive negative response");
        e.printStackTrace();
    } catch (IOException e) {
        System.err.println("IO error occur");
        e.printStackTrace();
    } 
}

}