OpenJWeb 1.9版本集成了以下框架和组件:
(1) MVC框架主要采用struts2.0.14+spring2.5.6+hibernate3
(2) 安全框架采用spring security2.0
(3) struts1.2(从上一版本移植过来的部分功能仍采用struts1.2)
(4) cas server单点登录服务器+springsecurity集成
(5)dwr3
(6)fckedit在线编辑器
(7)dhtmlxtree树形组件
(8)jotm JTA 跨数据库事务(基于tomcat)
(9)groovy动态语言
(10)apache lucene3.0全文搜索引擎
(11)基于openfire+spark+smack的Java即时通讯解决方案
(12)JFreeChart图表
(13)Fusion Charts ,Flex图表。
(14)集成James邮件服务器,并开发了web邮件管理客户端
(15)集成flex框架
(16) 图形化工作流设计器。
按照文档说明,安装成功。
但是真正准备学习其源码,查看src文件才发现全是空的。也就是没有提供代码,只有jar文件。
那只能反编译吧。感谢java decompiler.
我是从web.xml开始看,Servlet:
org.directwebremoting.servlet.DwrServlet,
net.fckeditor.connector.ConnectorServlet,
org.codehaus.xfire.spring.XFireSpringServlet,
Filter:org.apache.struts2.dispatcher.FilterDispatcher
listener-class:org.springframework.web.context.ContextLoaderListener
/WEB-INF/classes/applicationContext-security-new.xml
<!--/WEB-INF/classes/applicationContext-security.xml-->
<!--/WEB-INF/classes/datasource.xml
/WEB-INF/classes/core-service.xml
-->
/WEB-INF/classes/core-service-demo.xml
<!--/WEB-INF/core-service-demo.xml-->
/WEB-INF/classes/rmi-server.xml
/WEB-INF/classes/rmi-client.xml
<!--/WEB-INF/classes/core-service-ds1.xml -->
<!-- /WEB-INF/classes/system-config.xml-->
<!-- /WEB-INF/classes/core-xfire-webservice.xml --> <!--test!-->
/WEB-INF/xfire-servlet.xml
/WEB-INF/classes/quartz-schedule.xml
数据库用jndi,放在 tomcat/conf/server.xml里面,在core-service-demo.xml内
数据层用jdbc和hibernet,数据源用jndi。
websrvice用的是xfire. 顺带说下 时下webservice开源框架还有axis,cxf等等。
web service准确的说是在socket上跑http协议,然后用http承载xml。
从网络协议栈的观点来看,RMI与socket的网络编程处于不同层次上。基于socket的网络编程位于TCP协议之上,而RMI在TCP协议之上,又定义了自己的应用协议,其传输层采用的是Java远程方法协议(JRMP)。
ice也是一种rmi的实现.
spring对rmi和webservice都有封装。
在core-service-demo.xml中有个org.springframework.remoting.caucho.HessianProxyFactoryBean,就是。
Spring2 针对远程访问服务,提供的一个remote包。其的的是提供一套统一的远程服务发布功能。
先来看一下Spring2支持那些远程服务功能:
1. RMI服务 org.springframework.remoting.rmi.RmiServiceExporter
2. Hessian或者Burlap通过HTTP远程调用服务 org.springframework.remoting.caucho.HessianProxyFactoryBean
3. HTTP调用器暴露服务
系统里面所有前台对后台的调用,都是通过dwr实现的。
dwr应该类似一个servlet处理+js客户端。当js客户端发来请求,servlet根据规定的协议调用后台对应的java类方法。
使用dwr可以规避在jsp中的java编程。
im的客户端通讯可以用org.jivesoftware.smack.Chat,但这里用的是伪im,客户端是把消息发送到数据库,再从数据库定时读取。
smack是基于xmpp的java实现,以前做过一个基于.net的im实现,asgxmpp。服务端都是用openfire.