描述:短信猫启动 用main 函数启动成功能发短信,()
        在Tomcat 中 其他程序调用 SMSServiceByOwn.getInstance().startService();
       报错 Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;  
  
import org.smslib.Message.MessageEncodings;  
import org.smslib.OutboundMessage;  
import org.smslib.Service;  
import org.smslib.modem.SerialModemGateway; 
    
/** 
 * 描述:SMS Cat服务类 
 */  
public class SMSServiceByOwn {  
  
    /** 
     * 私有静态实例 
     */  
    private static SMSServiceByOwn instance = null;  
  
    /** 
     * 是否开启服务 
     */  
    private boolean isStartService = false;  
  
    /** 
     * 私有构造方法 
     */  
    
    private SMSServiceByOwn() {  
    }  
  
    /** 
     * 获取实例(单例模式) 
     *  
     * @return 
     */  
    public static SMSServiceByOwn getInstance() {  
        if (instance == null) {  
            instance = new SMSServiceByOwn();  
        }  
        return instance;  
    }  
  
    /** 
     * 开启短信服务 
     *  
     * @param path 
     *            配置文件路径 
     */  
    public void startService() {  
     SerialModemGateway [] gateways = null;
        System.out.println("开始初始化SMS服务!");  
  
        // 加载文件属性  
        
        
        // 初始化网关,参数信息依次为:COMID,COM号,比特率,制造商,Modem模式  
        gateways = new SerialModemGateway [1];
       
           gateways[0] = new SerialModemGateway("modem.com57", "COM57", 115200, "wavecom", "11258");  
            gateways[0].setOutbound(true);
            gateways[0].setInbound(false);  
            gateways[0].setSimPin("0000"); 
          
                 
        OutboundNotification outboundNotification = new OutboundNotification();  
  
        Service service = Service.getInstance();  
        if (service == null) {  
            System.out.println("初始化SMS服务失败!");  
            return;  
        }  
  
        service.setOutboundMessageNotification(outboundNotification);  
        try {  
        
        
               service.addGateway(gateways[0]);
               
        
            // 开启服务  
            service.startService();  
            System.out.println("初始化SMS服务成功!");  
            isStartService = true;  
            
        } catch (Exception e) {  
            System.out.println("开启SMS服务异常:" + e.getMessage());  
        }   
    }  
  
    /** 
     * 停止SMS服务 
     */  
    public void stopService() {  
        try {  
            Service.getInstance().stopService();  
            System.out.println("SMS服务关闭!");  
        } catch (Exception e) {  
            System.out.println("关闭SMS服务异常:" + e.getMessage());  
        }   
        isStartService = false;  
    }  
  
    /** 
     * 发送短信 
     *  
     * @param toNumber 
     *            手机号码 
     * @param message 
     *            短信内容 
     */  
    public String sendMessage(String toNumber, String message) {  
        if (!isStartService) {  
            System.out.println("尚未开启SMS服务!");  
            return "fail";  
        }  
  
        // 封装信息  
        OutboundMessage msg = new OutboundMessage(toNumber, message);  
        msg.setEncoding(MessageEncodings.ENCUCS2);  
        try {  
            // 发送信息  
            Service.getInstance().sendMessage(msg);  
        } catch (Exception e) {  
            System.out.println("SMS服务发送信息发生异常:" + e.getMessage());  
            isStartService = false;  
        }   
        
        return "success" ;
    }  
    
    
    public String sendMessage(List<String> Numbers, String message) {  
        if (!isStartService) {  
            System.out.println("尚未开启SMS服务!");  
            return "fail";  
        }  
        if (Numbers==null) {  
            System.out.println("目标手机号码为空!");  
            return  "fail";  
        }    
        List<String> activityList = new ArrayList<String>();
     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
        String tempStrSta = df.format(new Date());// new Date()为获取当前系统时间
        System.out.println("短信发送开始时间"+tempStrSta);
        for(int i=0;i<Numbers.size();i++){
             activityList.add(Numbers.get(i));
         
              OutboundMessage msg = new OutboundMessage(Numbers.get(i), message);  
                 msg.setEncoding(MessageEncodings.ENCUCS2); 
                 try {  
                     // 发送信息  
                     Service.getInstance().sendMessage(msg);  
                 } catch (Exception e) {  
                     System.out.println("SMS服务发送信息发生异常:" + e.getMessage());  
                     isStartService = false;  
                     return "fail";
                 }   
                 activityList.clear();
                 System.out.println("发送短信"+Numbers.get(i)+""+message+"");
           
        }
        String tempStrEnd = df.format(new Date());// new Date()为获取当前系统时间
        System.out.println("短信发送结束时间"+tempStrEnd+"发送"+Numbers.size()+"条");
        return "success" ;
        // 封装信息  
     
    }  
    public static void main(String[] args) {  
     SMSServiceByOwn.getInstance().startService();  
     List<String> phoneList = new ArrayList<String> ();
     phoneList.add("15561351200");
     
     for(int i = 0;i<1;i++)
      SMSServiceByOwn.getInstance().sendMessage(phoneList,  "SMS Boom  Message!!!");  
        //没必要的时候没停止服务,因为端口占用着  
     SMSServiceByOwn.getInstance().stopService();  
    }  
  
  
}