华为短信接口异常问题处理

        在一次项目实施中要用到华为的短信接口,我们是j2ee的项目,华为提供java的短信调用接口,文 档也还可以,但问题出在了jar包上。api的调用其实不难理解,api只是提供一些开放的接口出来,真正的业务代码还在应用平台那里,可是华为提供的这 个api有23M,我的天,和一个项目整个大小差不多了,我当时就感觉有点不对劲,打开jar包看了一下,乱七八糟什么都有,servlet的源码、 jdbc的源码、xml的源码.......build.xml等一些无用的东西都被打了进去,在项目中发送短信页面报错,后台什么也不显示,无语 中......,怎么也找不出问题,而且短信调用的方法断点都跟不进去,真是奇怪......,后来无意间看到webserver启动时报not loaded SMSendAPI.jar,我靠,这个问题烦了我三天时间,同样是放在WEB-INF/lib下的jar,为什么就只有华为的jar无法被 webserver加载呢?联系他们工程师后得到的回复是,把SMSend.jar放到webserver的公享lib下,我照着做了还是不行,而且 webserver这次无法启动了,包有冲突,我很是无语。后来让建个普通的java工程测试通过,很明显是jar包里的东西和webserver的类库 有冲突,可是他们工程师却说他们新建个web项目,只放他们的jar包是可以测试通过的,再次无语,我总不能把我项目下的jar包全删了吧。 ,后来我就对他们提供的jar包进行研究,发现很多类在执行过程中根本没有用到,我就一个个地删,但不管删哪个启动都会报错,后来一气之下将除了com包以外的所有文件都删了,结果成功启动,而且短信发送也没问题了。

  下面是我的短信调用代码,具体参数说明我就不一一解释了,如果你有用到他们会提供api文档,里面有解释。此处主要是说明在web项目中无法使用的问题,欢迎大家交流。

SMAPIConfig.setConfigFilePath(path); // 设置smsendsql.xml所在路径 

try {
    SMEntry.init(dbName, name, pwd);  
    SMEntry.logIn(userName, userPwd); 
    java.util.Date atTime = new java.util.Date();
    String sourceAddr = "xxxxx"; // 短信源地址
    int needStateReport = 0;  // 是否需要状态报告
    String serviceID = "API";  // 业务类型
    String feeType = "01";  // 资费类型
    String feeCode = "10";
    int id = SMEntry.submitShortMessageState(atTime, sourceAddr, destNo, msg, needStateReport, serviceID, feeType, feeCode);
    System.out.println("message state id=" + id);
} catch (Exception e) {
    e.printStackTrace();
    throw new RuntimeException(e);
}finally{
    try {
        SMEntry.cleanUp();
    }catch (SMException e) {
        e.printStackTrace();
    }
}


你可能感兴趣的:(关系型数据库)