- 浏览: 329149 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
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 41291.基于map或javaBean的增删改查可实现不写dao接口 ... -
S2SH读取XML扩展点
2014-07-27 01:39 684由于struts2、hibernate通过默认配置文件不支持通 ... -
导出Word、Excel、PPT通用功能设计思路
2014-03-07 16:25 1809工作中经常 ... -
HttpClient抓取解析网站支持多种验证方式
2014-03-06 10:10 1401工作中遇到了抓取多个项目数据并且有多种验证方式包括Http标准 ... -
Tomcat架构分析及性能调优
2014-02-16 17:59 3190一.Tomcat容器层级结构 分为四个等级,由四个子容器组成 ... -
(转载)拦截器与过滤器的区别
2013-05-10 15:36 998拦截器与过滤器的区别 : 1.拦截器是基于java的反射机制 ... -
(转载)Struts中默认的拦截器栈
2013-05-10 13:19 5040Struts中默认的拦截器栈 ... -
Java并发模式
2013-04-02 12:58 2238在公司做培训时用到,顺便在这里做个总结。 1.生产者消费者模式 ... -
海量数据、高并发优化方案
2013-03-16 18:53 8474一.应用服务器负载均衡 1.链路负载均衡 通过DNS解析域 ... -
Lucene 详解
2013-03-01 11:10 14911.什么是全文检索 对于搜索,按被搜索的资源类 ... -
Spring JDBC批量操作
2013-01-20 02:51 271、使用JdbcTemplate进行批 ... -
集成JBPM3,实现流程流转
2012-11-29 16:48 2115集成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 2130一.对象关系映射基础 1.hibernate对象属性映射 ...
相关推荐
java mina 消息推送
基于Mina的Android消息推送系统的研究与实现.pdf
Java-Mina长连接方式实现服务端主动推送到客户端。
一个对推送 及时的处理结束,长连接保持,以及对客户端 和服务端的实现,
mina2推送demo客户端资源,测试过可以使用,正式可靠,比较试用学习
mina2推送demo服务端推送结束,正式可靠,验证过,可以使用
http://knight-black-bob.iteye.com/blog/2370938 推送sdk (类似百度 推送 ) android mina (待优化... ) 本demo 研究的是原理,不要计较太多。。。。 至于token生成,service 保活,定时启动 不做说明。
CIM是一套基于mina或netty框架下的推送系统,或许有一些企业有着自己一套即时通讯系统的需求,那么CIM为您提供了一个解决方案,目前CIM支持websocket,android,ios,桌面应用,系统应用等多端接入支持,可应用于移动...
mina自定义编码器-固定位置指定消息的长度。apache mina
java mina 服务端,socket客服端传信息,客服端上传消息
一个简单的java框架Apache Mina 和Flex as3.0 的交互。
基于Mina架构开发的可配置的Socket Server,后台采用MySql数据库,可以独立app部署或Tomcat Servlet部署,包括Socket Server全部实现代码,后台MySql数据备份文件,Java测试代码,android端测试代码和iOS端测试代码...
CIM 是基于 mina 或者 netty 框架下的推送系统,支撑 websocket、android、ios、桌面应用、系统应用等多端接入支持。目前,CIM 服务端使用 springboot 搭建,仅仅拥有消息推送的功能,关于数据缓存与持久化都需要...
mina推送mina推送mina推送mina推送mina推送mina推送mina推送mina推送
完整的android消息推送示例,该例子完善了androidpn开源项目,支持离线推送。androidpn基于Apache Mina开源框架,采用XMPP协议传输数据。 实例中,服务端支持weblogic跟tomcat应用服务器。
先进的 java网络开发框架包和实例,里面有比较经典的例子程序,提供可开发高性能的网络程序框架
mina源代码学习mina源代码学习mina源代码学习mina源代码学习
基于Mina的网络通讯,分为服务端和客户端。 研究selector NIO实现时,发现了这个架构。 Mina的底层实现实际就是selector和SocketChannel。所以如果对Mina源码感兴趣的可以先去看下selector相关的例子。
一个Apache MINA使用案例源代码ApacheMina