半桶水开发 CMPP2.0 with Spring + JPA 1
本来公司招进来的时候是做PHP,简历哪里手多写了会Java.结果现在做的短信增值平台要用JAVA做网关接口,把我给逮住了.只能硬着头皮上了.
生成环境:
OS: Mac OSX 10.5.6
DB: Oracle 9i
Java:dev on JDK 5 run on JDK6
JAVA IDE : netbeans6.5 path 1
Java framework : Spring 2.5 Hibernate 3 with JPA Open-CMPP
注:
关于Open_CMPP,本来用的短信库是华为那个,可是上头给我的库有问题,构造发送短信的时候死活有问题.还好找到了一个反编译的类库,用法完全跟华为的一样.作者还改了一些BUG.特别感谢他
他的blog
小结一下主要技术:
呃,主要是想学习一下在注解的支持下开发 Spring+JPA,还有用到JDK5 的多线程技术 的开发.
分多页写
半桶水开发 CMPP2.0 with Spring + JPA 1半桶水开发 CMPP2.0 with Spring + JPA 2半桶水开发 CMPP2.0 with Spring + JPA 3
首先看一下结构:
收取下发的短信的线程
DeliverThreadService.java
/** * * @author rikugun */public class DeliverThreadService implements Runnable { private final int sleeptime = 1; private Logger log = Logger.getLogger(DeliverThreadService.class.getName()); @Autowired CMPPProxy CMPPProxy; @Autowired DeliverDao deliverDao; BlockingQueue<CMPPDeliverMessage> queue; private SpSmsDeliver deliver = null; @Override public void run() { queue = CMPPProxy.getDeliveMsgs(); while (true) { log.log(Level.INFO, "Waiting for Deliver.."); try { //从队列中取得下发短信 CMPPDeliverMessage msg = queue.take(); deliver = new SpSmsDeliver(msg.getDestnationId()); deliver.setContent(msg.getMsgContent().toString()); deliver.setResTime(new Date(System.currentTimeMillis())); deliver.setSmsOperator(1); deliver.setMobileNo(msg.getSrcterminalId()); try { deliverDao.create(deliver); } catch (PreexistingEntityException ex) { log.log(Level.SEVERE, null, ex); } catch (Exception ex) { log.log(Level.SEVERE, null, ex); } log.log(Level.FINE, msg.toString()); Thread.sleep(1000 * sleeptime); } catch (InterruptedException ex) { log.log(Level.SEVERE, null, ex); } log.log(Level.FINE, "Still Waiting..."); } }}