整合androidpn官方0.5版本
org.androidpn.server.starter.ServerStarter 程序的启动类,加载配置文件、jar包,创建XmppServer类实例,启动XmppServer
org.androidpn.server.xmpp.XmppServer 核心服务类,单例模式,启动jetty的服务
第89行,加载config.properties 文件
第91行,加载spring-config.xml 配置文件
第94、95行,启动jetty的console
org.androidpn.server.xmpp.net.XmppIoHandler
消息处理核心类,在spring-config.xml文件的第101行配置,XmppServer在加载spring-config.xml的时候,Spring会自动创建XmppIoHandler的实例
在spring-config.xml的第128行配置服务绑定的ip地址和端口号
XmppIoHandler
sessionOpened方法在一个网络连接被打开的时候,自动触发调用(由Mina框架触发调用)
第92行,在session中保持Connection连接,此Connection类封装了Mina的IoSession(真正负责网络数据传输)和一个自定义的Xmpp的Session(org.androidpn.server.xmpp.session抽象类),自定义Session中有SessionManager(org.androidpn.server.xmpp.session)的引用,SessionManager是负责管理Client连接到服务器的Session(org.androidpn.server.xmpp.session.ClientSession)
第93行,在session中保持StanzaHandler(org.androidpn.server.xmpp.net.StanzaHandler,处理网络传输的基于Xmpp协议的XML字符流)
messageReceived方法在服务器端接受到客户端消息的时候,自动触发调用(由Mina框架触发调用)
第137行,从session中获得 StanzaHandler
第151行,StanzaHandler处理消息
StanzaHandler
process方法处理客户端发送的消息,消息是XML格式的字符流
1. 以 "<stream:stream" 开头的是初始化
2. 以 "</stream:stream>" 开头的是消息请求的结尾
3. 以 "<?xml" 开头的忽略,<?xml version="1.0"?>
第111行,生成RootElement
第116-131行,判断RootElement的Name,
"starttls" 是安全传输层协议的校验
"message" Message类型的消息,表示两个jabber用户之间发送信息
"presence" Presence类型的消息,用来表明用户的状态
"iq" IQ 类型的消息,一种请求/响应机制
上面的三个消息类型对应下面三个类:
org.xmpp.packet.Message
org.xmpp.packet.Presence
org.xmpp.packet.IQ
======================禁止启动jetty应用服务器====================
org.androidpn.server.xmpp.XmppServer
注释第94行-100行,这几行是启动jetty
修改第164行 locateServer方法:
170行,File confDir = new File(baseDir, "conf") 无法获得conf目录,
改为:URL conf = XmppServer.class.getClassLoader().getResource("conf");
File confDir = new File(conf.getFile());
jdbc.properties修改相关数据库配置
======================整合到tomcat中===========================
将spring-config.xml中的内容复制到WEB-INF/applicationContext.xml,在顶部增加一段(只有在xmppHandler之前就行)
<bean id="xmppServer" class="org.androidpn.server.xmpp.XmppServer" >
</bean>
org.androidpn.server.xmpp.XmppServer
注释第92行,加载spring-config.xml 的部分
实现ApplicationContextAware 接口,implements ApplicationContextAware
添加下面的方法
public void setApplicationContext(ApplicationContext context)
throws BeansException {
this.context = context;
}
删除下列的jar包:
starter.jar
servlet-api-2.5.jar
jasper-6.0.29.jar
jasper-el-6.0.29.jar
jasper-jdt-6.0.29.jar
el-api-6.0.29.jar
jstl-1.1.2.jar
standard-1.1.2.jar
jsp-api-2.1.jar
mysql-connector-java-5.1.6.jar
jetty-sslengine-6.1.25.jar
不要删 jetty-6.1.25.jar、jetty-util-6.1.25.jar,否则编译会报错
=======================彻底剥离jetty=============================
删除 jetty-6.1.25.jar、jetty-util-6.1.25.jar
删除 org.androidpn.server.container.AdminConsole
======================androidpn-client-0.5.0=============================
修改 res/raw/androidpn.properties 中的xmppHost、xmppPort的值
使用ADT-20.0.2 需要把lib目录改为libs,否则部署到手机或模拟器上时运行报错,原因是jar包找不到。
低版本ADT是自动查找lib目录下的jar包,支持4.0、4.1系统的高版本ADT是自动查找libs目录下的jar包的
--------------------SpringMVC --> Struts2--------------------------
====================添加Struts所需的jar包======================
添加Struts所需的jar包:
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
ognl-2.7.3.jar
freemarker-2.3.15.jar
commons-fileupload-1.2.1.jar
struts2-spring-plugin-2.1.8.1.jar
====================创建、配置Struts2 Action ======================
创建
org.androidpn.server.console.action.NotificationAction
org.androidpn.server.console.action.SessionAction
org.androidpn.server.console.action.UserAction
在WEB-INF/目录下创建 applicationAction.xml,在文件里定义上面三个Action,将Action注入到Spring中
在src 下创建 struts.xml,在文件中配置上面三个Action,定义跳转地址
=====================修改jsp======================
decorators/default.jsp 将文件中 .do 形式的链接地址全部改为 .action
注意,在链接地址前增加应用上下文路径;跳转地址的格式要和struts.xml里配置的能够对应上
user/list.jsp
session/list.jsp
这两个文件只需要修改css和js的加载路径
notification/form.jsp
需要修改css和js的加载路径,还要修改form表单提交的url地址
====================修改web.xml======================
删除对SpringMVC的配置:第47行-56行
删除对sitemesh的配置: 第27行-41行
增加对Struts2的配置(自己google一下吧,这就省略了)
====================删除不相关的文件======================
删除 spring-webmvc-2.5.6.jar
删除 includes/taglibs.jsp 第4、5行和SpringMVC相关的标签
删除 WEB-INF/dispatcher-servlet.xml SpringMVC配置文件
删除 controller/NotificationController.java
删除 controller/SessionController.java
删除 controller/UserController.java
WEB-INF/decorators.xml sitemesh配置文件,删除后没有header和footer
org.androidpn.server.starter.ServerStarter 程序的启动类,加载配置文件、jar包,创建XmppServer类实例,启动XmppServer
org.androidpn.server.xmpp.XmppServer 核心服务类,单例模式,启动jetty的服务
第89行,加载config.properties 文件
第91行,加载spring-config.xml 配置文件
第94、95行,启动jetty的console
org.androidpn.server.xmpp.net.XmppIoHandler
消息处理核心类,在spring-config.xml文件的第101行配置,XmppServer在加载spring-config.xml的时候,Spring会自动创建XmppIoHandler的实例
在spring-config.xml的第128行配置服务绑定的ip地址和端口号
XmppIoHandler
sessionOpened方法在一个网络连接被打开的时候,自动触发调用(由Mina框架触发调用)
第92行,在session中保持Connection连接,此Connection类封装了Mina的IoSession(真正负责网络数据传输)和一个自定义的Xmpp的Session(org.androidpn.server.xmpp.session抽象类),自定义Session中有SessionManager(org.androidpn.server.xmpp.session)的引用,SessionManager是负责管理Client连接到服务器的Session(org.androidpn.server.xmpp.session.ClientSession)
第93行,在session中保持StanzaHandler(org.androidpn.server.xmpp.net.StanzaHandler,处理网络传输的基于Xmpp协议的XML字符流)
messageReceived方法在服务器端接受到客户端消息的时候,自动触发调用(由Mina框架触发调用)
第137行,从session中获得 StanzaHandler
第151行,StanzaHandler处理消息
StanzaHandler
process方法处理客户端发送的消息,消息是XML格式的字符流
1. 以 "<stream:stream" 开头的是初始化
2. 以 "</stream:stream>" 开头的是消息请求的结尾
3. 以 "<?xml" 开头的忽略,<?xml version="1.0"?>
第111行,生成RootElement
第116-131行,判断RootElement的Name,
"starttls" 是安全传输层协议的校验
"message" Message类型的消息,表示两个jabber用户之间发送信息
"presence" Presence类型的消息,用来表明用户的状态
"iq" IQ 类型的消息,一种请求/响应机制
上面的三个消息类型对应下面三个类:
org.xmpp.packet.Message
org.xmpp.packet.Presence
org.xmpp.packet.IQ
======================禁止启动jetty应用服务器====================
org.androidpn.server.xmpp.XmppServer
注释第94行-100行,这几行是启动jetty
修改第164行 locateServer方法:
170行,File confDir = new File(baseDir, "conf") 无法获得conf目录,
改为:URL conf = XmppServer.class.getClassLoader().getResource("conf");
File confDir = new File(conf.getFile());
jdbc.properties修改相关数据库配置
======================整合到tomcat中===========================
将spring-config.xml中的内容复制到WEB-INF/applicationContext.xml,在顶部增加一段(只有在xmppHandler之前就行)
<bean id="xmppServer" class="org.androidpn.server.xmpp.XmppServer" >
</bean>
org.androidpn.server.xmpp.XmppServer
注释第92行,加载spring-config.xml 的部分
实现ApplicationContextAware 接口,implements ApplicationContextAware
添加下面的方法
public void setApplicationContext(ApplicationContext context)
throws BeansException {
this.context = context;
}
删除下列的jar包:
starter.jar
servlet-api-2.5.jar
jasper-6.0.29.jar
jasper-el-6.0.29.jar
jasper-jdt-6.0.29.jar
el-api-6.0.29.jar
jstl-1.1.2.jar
standard-1.1.2.jar
jsp-api-2.1.jar
mysql-connector-java-5.1.6.jar
jetty-sslengine-6.1.25.jar
不要删 jetty-6.1.25.jar、jetty-util-6.1.25.jar,否则编译会报错
=======================彻底剥离jetty=============================
删除 jetty-6.1.25.jar、jetty-util-6.1.25.jar
删除 org.androidpn.server.container.AdminConsole
======================androidpn-client-0.5.0=============================
修改 res/raw/androidpn.properties 中的xmppHost、xmppPort的值
使用ADT-20.0.2 需要把lib目录改为libs,否则部署到手机或模拟器上时运行报错,原因是jar包找不到。
低版本ADT是自动查找lib目录下的jar包,支持4.0、4.1系统的高版本ADT是自动查找libs目录下的jar包的
--------------------SpringMVC --> Struts2--------------------------
====================添加Struts所需的jar包======================
添加Struts所需的jar包:
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
ognl-2.7.3.jar
freemarker-2.3.15.jar
commons-fileupload-1.2.1.jar
struts2-spring-plugin-2.1.8.1.jar
====================创建、配置Struts2 Action ======================
创建
org.androidpn.server.console.action.NotificationAction
org.androidpn.server.console.action.SessionAction
org.androidpn.server.console.action.UserAction
在WEB-INF/目录下创建 applicationAction.xml,在文件里定义上面三个Action,将Action注入到Spring中
在src 下创建 struts.xml,在文件中配置上面三个Action,定义跳转地址
=====================修改jsp======================
decorators/default.jsp 将文件中 .do 形式的链接地址全部改为 .action
注意,在链接地址前增加应用上下文路径;跳转地址的格式要和struts.xml里配置的能够对应上
user/list.jsp
session/list.jsp
这两个文件只需要修改css和js的加载路径
notification/form.jsp
需要修改css和js的加载路径,还要修改form表单提交的url地址
====================修改web.xml======================
删除对SpringMVC的配置:第47行-56行
删除对sitemesh的配置: 第27行-41行
增加对Struts2的配置(自己google一下吧,这就省略了)
====================删除不相关的文件======================
删除 spring-webmvc-2.5.6.jar
删除 includes/taglibs.jsp 第4、5行和SpringMVC相关的标签
删除 WEB-INF/dispatcher-servlet.xml SpringMVC配置文件
删除 controller/NotificationController.java
删除 controller/SessionController.java
删除 controller/UserController.java
WEB-INF/decorators.xml sitemesh配置文件,删除后没有header和footer