`
xuan
  • 浏览: 3998 次
  • 性别: Icon_minigender_1
  • 来自: diqiu
社区版块
存档分类
最新评论

mm7 彩信web项目接收数据的代码以及问题

阅读更多

首先是在tomcat上运行的web项目,在接收彩信中心发送的数据时却是使用了普通的应用程序模式

代码如下,用监听器打开:

/**
 * 监听器,监听联通彩信接收
 * @author fudl
 *
 */
public class ReceiveListener implements ServletContextListener {
	
	private static Log log = LogFactory.getLog(ReceiveListener.class);
	private static ReceiveMgr receMgr = new ReceiveMgr();
	public void contextDestroyed(ServletContextEvent event) {
		log.info("=========================\n结束接收联通彩信服务 end...");
		log.info("\n=========================");
		receMgr.stop();
		Runtime.getRuntime().exit(0); 
	}

	public void contextInitialized(ServletContextEvent event) {
		log.info("=========================\n监听接收联通彩信服务 start...");	
		log.info("\n=========================");
		receMgr.setConfig(ReceiveMgr.mm7Config);	
        receMgr.start();
	}

}

 

 

ReceiveMgr代码如下:

public class ReceiveMgr extends MM7Receiver{
    
    private static ReportMgr reportMgr = MgrFactory.getInstance("reportMgr", ReportMgr.class);
    private static DeliverMgr deliMgr = MgrFactory.getInstance("deliMgr", DeliverMgr.class);
    public static MM7Config mm7Config = null;
    private static Log log 	= LogFactory.getLog(ReceiveMgr.class);
    
    
    public ReceiveMgr() {
    	//初始化vasp接收器
		String path = "/conf/mm7Config.xml";
    	String configPath = getUrlPath(path);
    	mm7Config = new MM7Config(configPath);
    	String connPath = getUrlPath("/conf/ConnConfig.xml");
    	mm7Config.setConnConfigName(connPath);
    }
    	
    	/**
    	 * 接收联通的彩信内容并且提取有用信息
    	 */
	    public MM7VASPRes doDeliver(MM7DeliverReq request) {
	    	
	        DeliverBean deliBean = deliMgr.getMmsInfoByDeliver(request);
	       
	        if(deliBean == null){
	        	log.info("采集数据失败..");
	        	return null;
	        }
	        //保存到数据库
                .......................
	        
	        MM7DeliverRes res = new MM7DeliverRes();
	        res.setTransactionID(request.getTransactionID());
	        //设置成功状态,以便表明SP已经接收到传送消息 1000
	        res.setStatusCode(MMConstants.RequestStatus.SUCCESS);
	        
	        //返回给MM7 API,以便API将MM7DeliverRes返回给MMSC
	        return (MM7VASPRes)res;
	    }
	    
	    //接收回复报告
	    public MM7VASPRes doDeliveryReport(MM7DeliveryReportReq mm7DeliveryReportReq) {
	        MM7DeliveryReportRes res = new MM7DeliveryReportRes();
	        res.setTransactionID(mm7DeliveryReportReq.getTransactionID());
	        res.setStatusCode(MMConstants.RequestStatus.SUCCESS);

	        byte b = mm7DeliveryReportReq.getMMStatus();
	        if (b == 1 || mm7DeliveryReportReq.getStatusText().endsWith("OK")) {

	        }
	        
	        ReportBean reportBean = reportMgr.fillReportBean(mm7DeliveryReportReq);
	        //	update or insert
	        //reportMgr.mergeInto(reportBean);
	        reportMgr.recordRroportBean(reportBean);
	        log.info(" |mm7DeliveryReportReq| \n"+mm7DeliveryReportReq.toString());
	        return (MM7VASPRes)res;
	    }

	    public MM7VASPRes doReadReply(MM7ReadReplyReq mm7ReadReplyReq) {
	        MM7ReadReplyRes res = new MM7ReadReplyRes();
	        res.setTransactionID(mm7ReadReplyReq.getTransactionID());
	        res.setStatusCode(MMConstants.RequestStatus.SUCCESS);
	        int report_stat = 0;
	        String report_statusText = mm7ReadReplyReq.getStatusText();
	        return res;
	    }
	    
	   /**
	    * 获得真实路径
            * api读取相对路径有问题,所以写了一个读取相对路径的方法,然后把绝            对路径传给api
	    * @param path
	    * @return
	    */
	   private String getUrlPath(String path){
	    	String urlPath = null;
	    	if(!path.isEmpty()){
	    		//注意加载资源文件的写法  /表示从根目录开始  否则就表示从当前类所在的路径下开始  
	    		URL url = this.getClass().getResource(path); 
	    		urlPath = url.getPath();
	    	}
	    	return urlPath;
	    }
	 
	}

 

虽然api提供web方式的接收数据方式,但是不知道是配置原因还是什么,老是接收不到数据,希望有牛人解答啊

 

         <mmscURL>/mm7(不知道什么用,难道和web方式接收有关)</mmscURL>
	<mmscIP>联通提供的ip和port</mmscIP>
	<MmscID>同样联通提供</MmscID>	
	<UseSSL>true</UseSSL>
	<ListenIP>自己的ip需上报联通设置</ListenIP>
	<ListenPort>端口号</ListenPort>

 web方式代码:

public class MyReceiver extends MM7RecieveServlet
{
	public MM7VASPRes doDeliver(MM7DeliverReq request)
	{
		
           return(MM7VASPRes)mm7DeliverRes;
	}
}

 实在搞不懂为什么接收不到数据,求解答啊。。。

 

另外,上述线程接收方式,不太稳定,抓包得知能收到数据,但是解析不了,所以时有彩信发送不了的情况

用的包是mm7api.jar。

分享到:
评论
2 楼 kw73b 2012-05-08  
你这个 web方式接收状态报告的问题解决了吗  我也遇到同样的问题了qq  1468788657  麻烦联系我  谢谢
1 楼 xuan 2011-03-04  
没有人知道么。。自己先顶。。

相关推荐

    MM7彩信模拟器

    3. **MM7消息结构**:每个MM7消息都包含头信息和主体,头信息描述消息的元数据,如发送者、接收者、消息ID等;主体则包含了实际的多媒体内容。 4. **MM7Simulator**:这是压缩包中的主程序,是一个实现MM7协议模拟...

    联通移动彩信MM7 .net 开发库

    标题中的“联通移动彩信MM7 .net 开发库”指的是一个专为处理中国联通和中国移动的彩信服务的.NET开发库。这个库主要是为了帮助开发者能够利用.NET框架,特别是C#语言,来实现与这两家运营商的MM7( Multimedia ...

    新的彩信规范文档有一个,使用新的soap发送附件的方式来发送彩信

    SubmitReq元素包含了彩信的各种元数据,如版本号(MM7Version)、发送者标识(SenderIdentification,包括VASPID、VASID和SenderAddress)、接收者信息(Recipients)、服务代码(ServiceCode)以及是否需要发送送达...

    中移MM7+API用户手册

    中移MM7 API用户手册是一份详尽的技术文档,旨在指导服务提供商(SP)如何利用中国移动集团提供的MM7 API与彩信中心(MMSC)进行交互,实现多媒体消息服务(MMS)的增值业务开发。此API采用纯Java语言编写,兼容JDK ...

    彩信网关程序(JAVA)

    彩信网关程序是通信行业中一个关键的组件,主要用于实现多媒体消息服务(MMS),即在移动设备之间发送和接收包含图像、音频、视频等多媒体内容的短信。在Java平台上开发彩信网关程序,利用了Java的强大特性和丰富的...

    中国移动MM7用户手册

    **中国移动MM7 API 用户手册 V1.5.1** 是一份针对SP(服务提供商)如何利用中国移动集团提供的MM7 API与彩信中心进行有效对接的指导文档。通过该API,SP能够开发出多媒体消息相关的增值业务。 - **API特点**:此API...

    MM7SPWorker___.rar_Java编程_Java_

    本资源“MM7SPWorker.rar”正是一个基于Java编程的移动彩信SP网关程序,它实现了彩信MT(Multimedia Messaging Service - Terminating,即彩信接收)和MO(Multimedia Messaging Service - Originating,即彩信发送...

    WSMM7Interface.rar_Java编程_Java_

    标题中的"WSMM7Interface.rar"暗示了一个与Java编程相关的项目,主要涉及的是彩信网关的WebService接口以及MM7协议的收发彩信功能。这个项目可能是一个Java应用程序,包含了实现这些功能的源代码。 在描述中提到,...

    php短信接口文档

    - 参数:zh(帐号)、mm(密码)、dxlbid(短信类别ID)、cxbt(彩信标题)、hm(接收手机号码)、zip(彩信内容的ZIP包) - 返回值:错误代码,如-1表示参数错误,-2表示验证错误,-11表示短信类别ID错误,-13...

Global site tag (gtag.js) - Google Analytics