- 浏览: 333833 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
xing0029:
这样配置的话 事物不成功啊 还有什么地方需要注意的么 可以加我 ...
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
mengqingyu:
liuxiaolu 写道jotm的我的没有成功,楼主能否帮助一 ...
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
liuxiaolu:
jotm的我的没有成功,楼主能否帮助一下
JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器) -
aptech406328627:
求解救,没弄好QQ:1053942353
Spring邮件发送(可带附件,模板,群发,异步发送等功能) -
ghpaas:
web可视化自定义表单推荐使用GForms开发平台(http: ...
在线表单设计器设计原理
import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; import org.webframe.web.util.WebFrameUtils; import com.berheley.bi.grp.nio.messageUtil.IProcessor; import com.berheley.bi.grp.nio.messageUtil.IWebMessageHelper; import com.berheley.bi.grp.nio.messageUtil.SocketManager; /** * * 类功能描述:消息推送核心类 * * @author <a href="mailto:qingyu.meng21@gmail.com">mengqingyu </a> * @version $Id: codetemplates.xml,v 1.1 2009/03/06 01:13:01 mengqingyu Exp $ * Create: 2013-7-30 下午03:35:40 */ public class ServerHandler extends IoHandlerAdapter { private Log log = LogFactory.getLog(ServerHandler.class); private IWebMessageHelper webMessageHelper; public IWebMessageHelper getWebMessageHelper() { return webMessageHelper; } public void setWebMessageHelper(IWebMessageHelper webMessageHelper) { this.webMessageHelper = webMessageHelper; } /** * 接受消息,登陆时执行此方法 */ @Override public void messageReceived(IoSession session, Object message) throws Exception { String msg = message.toString().trim(); if (msg.startsWith("{")) { String username = JSONObject.fromObject(msg).getString("sd").toString(); SocketManager.getInstance().addUserToOnlineMap(username, session); List<Map<String,Object>> userList = webMessageHelper.findUserByBinding(username); if(userList.size()>0){ String jsonMessage = webMessageHelper.changeListToJSONArray(webMessageHelper.findMobileByBinding()).toString(); webMessageHelper.sendMessage(username, jsonMessage, (IProcessor) WebFrameUtils.getBean("webMessage")); } } log.info("<-------------------- Received Message: " + msg + "--------------------->"); } @Override public void sessionCreated(IoSession session) throws Exception { super.sessionCreated(session); log.info("<--------------------MINA Server Connection Created--------------------->"); } @Override public void sessionOpened(IoSession session) throws Exception { super.sessionOpened(session); session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 1800); //读写 通道均在1800 秒内无任何操作就进入空闲状态 log.info("<--------------------MINA Server Connection Opened--------------------->"); } @Override public void sessionClosed(IoSession session) throws Exception { this.removeUserBySessionId(session); session.close(true); log.info("<--------------------MINA Server Connection Closed--------------------->"); } @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception { this.removeUserBySessionId(session); session.close(true); log.info("Session Id: " + session.getId() + "" + cause.getMessage()); log.error(cause); } /** * 超出空闲时间执行 */ @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { this.removeUserBySessionId(session); session.close(true); log.info("<--------------------Session Idle--------------------->"); } /** * * @function:移除在线列表,关闭session * @param session * @author: mengqingyu 2013-7-30 下午03:35:22 */ private void removeUserBySessionId(IoSession session) { SocketManager.getInstance().removeUserBySessionId(session.getId()); } } import java.beans.PropertyEditorSupport; import java.nio.charset.Charset; /** * * 类功能描述:中文编码 * * @author <a href="mailto:qingyu.meng21@gmail.com">mengqingyu </a> * @version $Id: codetemplates.xml,v 1.1 2009/03/06 01:13:01 mengqingyu Exp $ * Create: 2014-1-15 下午01:42:30 */ public class CharsetEditor extends PropertyEditorSupport { private Object value; @Override public void setAsText(String text) throws IllegalArgumentException { if (text != null) this.value = Charset.forName(text); else this.value = Charset.forName("UTF-8"); } @Override public Object getValue() { return value; } } import org.apache.mina.transport.socket.nio.NioSocketAcceptor; import org.webframe.web.util.WebFrameUtils; /** * * 类功能描述:获取端口号 * * @author <a href="mailto:qingyu.meng21@gmail.com">mengqingyu </a> * @version $Id: codetemplates.xml,v 1.1 2009/03/06 01:13:01 mengqingyu Exp $ * Create: 2013-7-30 下午03:42:04 */ public class MinaHelper { private static final NioSocketAcceptor acc = (NioSocketAcceptor) WebFrameUtils.getBean("ioAcceptor"); public static int getMinaPort() { return acc.getDefaultLocalAddress().getPort(); } } import net.sf.json.JSONObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.mina.core.session.IoSession; import com.berheley.bi.grp.nio.mina.ServerHandler; /** * * 类功能描述:消息处理器抽象类 * * @author <a href="mailto:qingyu.meng21@gmail.com">mengqingyu </a> * @version $Id: codetemplates.xml,v 1.1 2009/03/06 01:13:01 mengqingyu Exp $ * Create: 2013-7-30 下午03:52:59 */ public abstract class AbstractProcessor implements IProcessor { protected Log log = LogFactory.getLog(ServerHandler.class); protected SocketManager manager = SocketManager.getInstance(); public abstract void process(JSONObject jsonMessage, IoSession session); } import net.sf.json.JSONObject; import org.apache.mina.core.session.IoSession; /** * * 类功能描述:统一消息处理接口 * * @author <a href="mailto:qingyu.meng21@gmail.com">mengqingyu </a> * @version $Id: codetemplates.xml,v 1.1 2009/03/06 01:13:01 mengqingyu Exp $ * Create: 2014-1-15 下午01:42:02 */ public interface IProcessor { /** * * @function:统一消息处理接口 * @param jsonMessage * @param session * @author: mengqingyu 2013-7-30 下午03:56:10 */ public void process(JSONObject jsonMessage, IoSession session); } import net.sf.json.JSONObject; import org.apache.mina.core.session.IoSession; import org.springframework.stereotype.Component; /** * * 类功能描述:消息提醒处理器 * * @author <a href="mailto:qingyu.meng21@gmail.com">mengqingyu </a> * @version $Id: codetemplates.xml,v 1.1 2009/03/06 01:13:01 mengqingyu Exp $ * Create: 2013-7-3 下午04:04:50 */ @Component("webMessage") public class WebMessageProcessor extends AbstractProcessor { @Override public void process(JSONObject jsonMessage, IoSession session) { if (jsonMessage != null) { IoSession userSession = manager.getUserSession(jsonMessage.getString("sender")); if (userSession != null) { userSession.write(jsonMessage); log.info("***********************【页面提醒】:" + jsonMessage); } } } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <util:properties id="mina" location="classpath:mina.properties"/> <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor" init-method="bind" destroy-method="unbind"> <property name="defaultLocalAddress" value="#{mina['mina.server.port']}" /> <property name="handler" ref="serverHandler" /> <property name="filterChainBuilder" ref="minaFilterChainBuilder" /> </bean> <!-- NIO处理器 --> <bean id="serverHandler" class="com.berheley.bi.grp.nio.mina.ServerHandler"> <property name="webMessageHelper" ref="webMessageHelper" /> </bean> <!-- 构造过滤器链--> <bean id="minaFilterChainBuilder" class="org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder"> <property name="filters"> <map> <entry key="minaloggingFilter" value-ref="minaloggingFilter" /> <entry key="minaProtocolCodecFilter" value-ref="minaProtocolCodecFilter" /> </map> </property> </bean> <!-- 保证TCP协议所有的包发送方的写操作与接受方的读操作一一对应 --> <bean id="minaProtocolCodecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter"> <constructor-arg> <bean class="org.apache.mina.filter.codec.textline.TextLineCodecFactory"> <constructor-arg index="0" type="java.nio.charset.Charset"> <value>UTF-8</value> </constructor-arg> <property name="encoderMaxLineLength" ref="maxValue"></property> <property name="decoderMaxLineLength" ref="maxValue"></property> </bean> </constructor-arg> </bean> <util:constant id="maxValue" static-field="java.lang.Integer.MAX_VALUE"/> <!-- 构造日志过滤器 --> <bean id="minaloggingFilter" class="org.apache.mina.filter.logging.LoggingFilter" /> <!-- 构造属性编辑器 --> <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="java.net.SocketAddress"> <bean class="org.apache.mina.integration.beans.InetSocketAddressEditor" /> </entry> <entry key="java.nio.charset.Charset"> <bean class="com.berheley.bi.grp.nio.mina.CharsetEditor" /> </entry> </map> </property> </bean> </beans>
mina.properties文件内容
mina.server.port=9094 mina.flex.port=840
- 消息推送核心代码.rar (838 KB)
- 下载次数: 20
发表评论
-
基于Mybatis封装的增删改查实现通用自动化sql
2014-12-07 20:59 41891.基于map或javaBean的增删改查可实现不写dao接口 ... -
S2SH读取XML扩展点
2014-07-27 01:39 733由于struts2、hibernate通过默认配置文件不支持通 ... -
导出Word、Excel、PPT通用功能设计思路
2014-03-07 16:25 1851工作中经常 ... -
HttpClient抓取解析网站支持多种验证方式
2014-03-06 10:10 1434工作中遇到了抓取多个项目数据并且有多种验证方式包括Http标准 ... -
Tomcat架构分析及性能调优
2014-02-16 17:59 3225一.Tomcat容器层级结构 分为四个等级,由四个子容器组成 ... -
(转载)拦截器与过滤器的区别
2013-05-10 15:36 1037拦截器与过滤器的区别 : 1.拦截器是基于java的反射机制 ... -
(转载)Struts中默认的拦截器栈
2013-05-10 13:19 5085Struts中默认的拦截器栈 ... -
Java并发模式
2013-04-02 12:58 2282在公司做培训时用到,顺便在这里做个总结。 1.生产者消费者模式 ... -
海量数据、高并发优化方案
2013-03-16 18:53 8565一.应用服务器负载均衡 1.链路负载均衡 通过DNS解析域 ... -
Lucene 详解
2013-03-01 11:10 15451.什么是全文检索 对于搜索,按被搜索的资源类 ... -
Spring JDBC批量操作
2013-01-20 02:51 271、使用JdbcTemplate进行批 ... -
集成JBPM3,实现流程流转
2012-11-29 16:48 2202集成JBPM到OA系统,并实现JbpmFacade接口 - ... -
Spring MVC 文件上传
2010-03-23 16:45 1124MultipartHttpServletRequest mul ... -
导出Excel(jxl)
2009-08-05 09:15 526Action代码: import java.io.IOExce ... -
Hibernate笔记(常用技术)
2009-07-21 17:13 2157一.对象关系映射基础 1.hibernate对象属性映射 ...
相关推荐
Mina的核心思想是基于回调的事件模型,允许开发者编写非阻塞式的I/O代码,提高了系统的并发处理能力。 在消息推送场景下,Mina通常扮演服务器端的角色,接收客户端的连接请求,建立长连接,然后通过这些连接向...
【基于Mina的Android消息推送系统】是一种针对移动互联网中消息传输实时性和效率优化的技术解决方案。随着智能手机技术的迅速崛起,尤其是iOS和Android操作系统的普及,移动应用的需求日益增长,传统服务器被动接收...
通过以上步骤,我们可以构建一个基于Java-Mina的服务器,实现服务端主动向客户端推送数据的功能。同时,结合Spring框架,可以实现更灵活和可扩展的应用架构。在实际项目中,还可能涉及其他高级特性,如负载均衡、...
【消息推送笔记】这篇笔记主要记录了学习郭林老师关于消息推送课程时的要点,特别是通过Mina框架实现服务器端的基础架构。Mina是一个轻量级的网络通信框架,广泛用于构建高性能、高可用性的网络应用程序,如消息推送...
标题中的“mina2推送demo服务端”指的是使用Apache Mina框架构建的一个推送服务端的示例项目。Apache Mina是一个开源的Java网络应用框架,它简化了开发高性能和高可用性的网络服务器和客户端应用程序的工作。Mina...
《MINA2推送Demo客户端详解及应用》 MINA(Multi-purpose Infrastructure for Network Applications)是一个高性能、异步的网络通信框架,由Apache软件基金会开发,主要用于构建网络应用程序,如TCP/IP和UDP/IP协议...
1. **实时推送**:实时推送是现代应用中常见的一种需求,如消息通知、直播互动等。MINA可以通过TCP长连接来实现这一点,TCP是一种面向连接的、可靠的传输协议,适合用于需要持续交互的数据通信。 2. **长连接**:长...
Java开源实时消息推送系统是一种基于Java技术构建的高效、可靠且可扩展的解决方案,用于在互联网应用程序中实现实时通信。这种系统通常采用发布/订阅模型,允许服务器将消息广播到多个客户端,确保数据的即时传输。...
http://knight-black-bob.iteye.com/blog/2370938 推送sdk (类似百度 推送 ) android mina (待优化... ) 本demo 研究的是原理,不要计较太多。。。。 至于token生成,service 保活,定时启动 不做说明。
完整的android消息推送示例,该例子完善了androidpn开源项目,支持离线推送。androidpn基于Apache Mina开源框架,采用XMPP协议传输数据。 实例中,服务端支持weblogic跟tomcat应用服务器。
CIM是一套基于mina或netty框架下的推送系统,或许有一些企业有着自己一套即时通讯系统的需求,那么CIM为您提供了一个解决方案,目前CIM支持websocket,android,ios,桌面应用,系统应用等多端接入支持,可应用于移动...
同样,Flex中的事件模型也允许用户在用户交互或其他系统事件发生时执行代码。 5. **安全性**:在Mina和Flex的交互中,安全也是一个重要的考虑因素。可以使用SSL/TLS来加密传输的数据,确保通信的安全性。此外,还...
Apache MINA(Multi-purpose Infrastructure for Network Applications)是一个Java框架,用于构建高性能、高可用性的网络应用程序,例如服务器和客户端。MINA提供了高级网络通信抽象,包括异步I/O、事件驱动的架构...
《MINA 1.17核心源码解析与应用实践》 MINA(Java Multithreaded Network Application Framework)是一个高性能、易用的Java网络应用框架,尤其在处理大规模并发连接时表现出色。MINA 1.17版本是其历史上的一个重要...
1. **初始化ServerBootstrap**:首先,我们需要创建一个`ServerBootstrap`对象,它是Mina服务器的核心配置类。 2. **设置通道处理链**:通过`pipeline()`方法设置`ChannelPipeline`,它定义了事件的处理流程。一般会...
《Mina框架详解及其核心库解析》 Apache Mina是一个高度可扩展的网络通信框架,主要应用于开发高性能、高效率的服务器端应用。...在实际的推送服务中,Mina可以有效地处理大量并发连接,确保消息的快速、可靠传输。
文档中的实验结果表明,通过基于Apache Mina的推送方案设计的Web服务性能的移动分析系统具有良好的开放性和安全性,能有效降低移动应用开发者的开发周期。 ### 基金项目 该研究得到了国家自然科学基金资助项目的...
基于Mina架构开发的可配置的Socket Server,后台采用MySql数据库,可以独立app部署或Tomcat Servlet部署,包括Socket Server全部实现代码,后台MySql数据备份文件,Java测试代码,android端测试代码和iOS端测试代码...