标签:决定 二次 编译 service 解决方法 服务 导入 java_home 发送
公司最近买了个GSM 短信猫池用于发短信。在途中遇到很多问题,现在总结下遇到的问题。
1.首先GSM 自带有个针对数据库开发的软件,长短信服务器。按照对应规则,存入数据到表中,然后长短信服务器就会自动发送短信。按照客服给的资料一套流程走下来,磕磕绊绊的总算是可以发送短信了。结果把短信猫放到服务器上,长短信服务器就报各种错误,反正就是工作不了坑爹啊!因为我们服务器的系统是win2008R2,而我测试的机子是win7系统。至此决定用第2种方法:dll开发.
2.dll开发,用java开发,其中有自带的二次开发短信包.
首先,把smslib-3.3.0b2.jar和comm.jar,放入工程lib中,javax.comm.properties放到%JAVA_HOME%/jre/lib下,
win32com.dll放到%JAVA_HOME%/jre/bin下。路径放错了,调用起来就会报错的。
但是了我的系统是64位的,查了下百度win32com.dll只适应于jdk32位的版本。而64位的需要使用rxtx,幸好网上有这种包下载。
http://www.inextera.com/thread-1216-1-1.html,该地址有代码并且可以下载到包.非常感谢!
Windows
----------------------------------------------------
Choose your binary build - x64 or x86 (based on which version of
the JVM you are installing to)
NOTE: You MUST match your architecture. You can‘t install the i386
version on a 64-bit version of the JDK and vice-versa.
For a JDK installation:
Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext
Copy rxtxSerial.dll ---> <JAVA_HOME>\jre\bin
Copy rxtxParallel.dll ---> <JAVA_HOME>\jre\bin
按照这样配置好文件,准备工作完成。
3.由于我是用myEclipse开发的,smslib.jar手动加到项目lib下导入jar包,发现这样,Maven Install的时候老是找不到smslib包,所以如果是Maven项目,还是在pom.xml中配置更为稳妥。
<!-- https://mvnrepository.com/artifact/org.smslib/smslib -->
<dependency>
<groupId>org.smslib</groupId>
<artifactId>smslib</artifactId>
<version>3.5.4</version>
</dependency>
4.把测试代码跑起来时,老是出现版本不对的情况.因为我的MyEclipse有2个Tomcat,所以windows-perference-MyEclipse-Service-Tomcat-jdk配置的jdk跟我运行项目的jdk配置没有关系。而我Tomcat跑的jdk版本是1.6的,而项目编译是1.7的。
真是醉了,查了好久的。真是作死啊搞什么2个tomcat,后面我在加了一个tomcat,这个tomcat运行的jdk是我本机安装的jdk版本1.7的。把所有对应jdk版本路径改成这个,终于成功了。
5.可发了一条短信后,第2条短信就报错了,java.lang.RuntimeException: javax.comm.PortInUseException:说的是端口被占用了。
解决方法是:service.removeGateway(gateway);增加这行代码。然后就可以连续发送了,造成只发送一条短信的原因:我查了下是说不短信猫不能通过程序停止,也不知道是不是,呵呵
6.好了到此为止可能以为已经好了,结果把项目部署到服务器上后,发现短信又发送不出来了,我了个去。有没有疯了的感觉!想想代码是一样的,那么出错的肯定是环境了,难道又是系统的原因。纠结!
又花了几个小时时间去找原因,联想到第4步是因为jdk版本的问题而不能发送短信。那么会不 会是jdk版本的原因了,查了下版本是1.7的,那么就没错了。然后看了下服务器安装tomcat时带有jdk的路径一看C:\Program Files\Java\jre7。
想了下是不是文件应该配置到jre7中的bin和lib包下了,于是尝试了下,果然是这个问题。此刻心中是。。。。。。。,不容易啊!
标签:决定 二次 编译 service 解决方法 服务 导入 java_home 发送
原文地址:http://www.cnblogs.com/restlessheart/p/6904586.html