论坛首页 移动开发技术论坛

用androidpn来实现推送

浏览 218267 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-11  
zsg88 写道
张子游 写道
zsg88 写道
花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。
求开源,哈哈


给个邮箱发给你.  

zhangziyou007@qq.com 谢谢
0 请登录后投票
   发表时间:2012-04-11  
zsg88 写道
花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。

同求开源,我的邮箱chenle-yj@163.com,谢谢兄弟啦
0 请登录后投票
   发表时间:2012-04-12  
cdztop@gmail.com;chenle-yj@163.com;zhangziyou007@qq.com;


邮件已发
0 请登录后投票
   发表时间:2012-04-12   最后修改:2012-04-15
zsg88 写道
cdztop@gmail.com;chenle-yj@163.com;zhangziyou007@qq.com;

邮件已发


谢了。。


v0.4.0
更新时间:2012年4月12日
更新内容:
(1)、客户端增加登录界面(记住密码、自动登录);
(2)、系统增加消息队列功能 ,可以向不在线的用户发送信息,待该用户上线后即可收到该信息 。
2012年4月12日 23:02:27

服务器地址:http://lab.shmtu.org:8080/PushServer

0 请登录后投票
   发表时间:2012-04-14  
啊,我中午发的帖子被删了》??????
0 请登录后投票
   发表时间:2012-04-14  
zsg88 写道
花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。

哥们,你那个hibernate 报方言错误。
0 请登录后投票
   发表时间:2012-04-15   最后修改:2012-04-15
张子游 写道
zsg88 写道
花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。

哥们,你那个hibernate 报方言错误。



mysql5.0  jdk6.0 跑了好多天了,没有问题.  各自的环境不同,自己改改

其他注意

(一)请修改  XmppServer  的start方法

屏蔽掉context = new ClassPathXmlApplicationContext("spring-config.xml");

改为ApplicationContextAware 接口中的

public void setApplicationContext(ApplicationContext context) throws BeansException

方法,获得ApplicationContext对象。

否则会启动了2个名为ioAcceptor的NioSocketAcceptor实例,可以查看log日志,在tomcat的log目录下的androidpn.log日志,浪费资源

而且在linux系统下会提示5552端口被占用

(二) <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">

修改成destroy-method="disponse">能快速关闭tomcat进程

(三)把用户系统融合到自己的应用中去,请修改org.androidpn.server.service.impl.UserServiceImpl
,使用自己系统的用户接口

(四)客户端自动注册使用的随机串,如果要使用自己系统的用户,客户端请修改org.androidpn.client.XmppManager 中的username和password

并用修改服务器端的用户身份验证类org.androidpn.server.xmpp.auth.AuthManager的public static AuthToken authenticate(String username, String token,
            String digest) throws UnauthenticatedException 方法
0 请登录后投票
   发表时间:2012-04-15  
zsg88 写道
张子游 写道
zsg88 写道
花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。

哥们,你那个hibernate 报方言错误。



mysql5.0  jdk6.0 跑了好多天了,没有问题.  各自的环境不同,自己改改

其他注意

(一)请修改  XmppServer  的start方法

屏蔽掉context = new ClassPathXmlApplicationContext("spring-config.xml");

改为ApplicationContextAware 接口中的

public void setApplicationContext(ApplicationContext context) throws BeansException

方法,获得ApplicationContext对象。

否则会启动了2个名为ioAcceptor的NioSocketAcceptor实例,可以查看log日志,在tomcat的log目录下的androidpn.log日志,浪费资源

而且在linux系统下会提示5552端口被占用

(二) <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">

修改成destroy-method="disponse">能快速关闭tomcat进程

(三)把用户系统融合到自己的应用中去,请修改org.androidpn.server.service.impl.UserServiceImpl
,使用自己系统的用户接口

(四)客户端自动注册使用的随机串,如果要使用自己系统的用户,客户端请修改org.androidpn.client.XmppManager 中的username和password

并用修改服务器端的用户身份验证类org.androidpn.server.xmpp.auth.AuthManager的public static AuthToken authenticate(String username, String token,
            String digest) throws UnauthenticatedException 方法

灰常感谢,我用的tomcat7,因为我的tomcat6,在ROOT下运行其他的呢,哎。该睡了。。
0 请登录后投票
   发表时间:2012-04-15   最后修改:2012-04-15
cdztop 写道
zsg88 写道

(一)请修改  XmppServer  的start方法
屏蔽掉context = new ClassPathXmlApplicationContext("spring-config.xml");
改为ApplicationContextAware 接口中的
public void setApplicationContext(ApplicationContext context) throws BeansException
方法,获得ApplicationContext对象。
否则会启动了2个名为ioAcceptor的NioSocketAcceptor实例,可以查看log日志,在tomcat的log目录下的androidpn.log日志,浪费资源
而且在linux系统下会提示5552端口被占用

这个具体怎么改呢?哪里看到有两个名为ioAcceptor的NioSocketAcceptor实例,我看了启动日志,没有找到。


(二) <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">
修改成destroy-method="disponse">能快速关闭tomcat进程

能快速关闭tomcat进程,什么意思?

第一个问题是针对修改后的SSH版本, 原版没有起2次的问题


能快速关闭tomcat进程,什么意思?

在linux下运行shutdown后java进程销毁得很慢,改改能快点。

应为我shutdwon后比较性急立即又startup了,原来的进程没被杀死程序起来会有问题。不得不手动kill掉进程。可悲的是还没有kill权限。所以改了一下好像能死得快点
0 请登录后投票
   发表时间:2012-04-15  
cdztop 写道
再问两个问题:
1、用JDBC操作数据库的时候,每次都是打开数据库连接--操作数据库--关闭数据库的连接。这样感觉效率很低,
那hibernate是怎么操作数据库的呢?

2、假如我现在要实现的效果是这样的:一个用户只需要一个帐号(username,password),只有一台PushServer服务器,但是有很多需要push功能的Android应用,然后push的条件的username+对应的客户端应用。
我的想法是:xmpp里面有<node@domain/home>和<node@domain/work>,我想domain就是PushServer,home和work就是Android客户端的应用名,node就是帐号的username。我也试着测试了一下。但是有一个问题。
在session里面的列表是正常的,就是有两个名为username的session,但是users列表的对应user都是离线的,服务器广播出来的信息都收不到。
我想是SessionManager里面的public ClientSession getSession(String username)这个方法的问题。
它原来是:   
private static final String RESOURCE_NAME = "AndroidpnClient";
public ClientSession getSession(String username) {
    return getSession(new JID(username, serverName, RESOURCE_NAME, true));
}
这个RESOURCE_NAME就是我上面说的home和work的意思。
不知道你有没有明白我的意思。

总之就是一个username怎么才能有2个RESOURCE_NAME。而且能根据RESOURCE_NAME和username唯一确定一个ClientSession。





1.  用的是数据库连接池
     spring管理连接(打开,提交,关闭),见spring的配置和java注解

2.  user列表应该也要显示在线,等我上班抽空测试一下
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics