分享自己由Struts,Spring IOC,AOP,Security和Hibernate搭建的论坛源码(加上demourl)
Vertonur
2012-08-12
工作5年多,最近在it网站上逛,想看下大家在技术上达到一定层次后会往哪个方向发展,了解下各自的经历。结果发现有蛮多刚入行的人不知该学些什么,也不知该往哪个方向发展,或者在各自公司这样或那样的工作环境中不能如愿学习自己感兴趣的东西。也有很多人在谈创业、谈计划,但多数人感觉上还是比较迷茫,实际行动的人并不多,也缺少国外那样的环境供个人成长。
所以我整理并完善了这几年不断学习并实践而开发的项目,跟大家分享下以往项目中用到的技术、框架、工具等,希望改变下氛围,也希望对大家有所帮助。 demo地址:http://www.xlinecode.com 地址如下: http://code.google.com/a/eclipselabs.org/p/you/source/browse/ 大致项目情况如下: 该项目是以cms为出发点,目的是打造一个系统原型,根据相关需求可在该原型上添加相关功能来实现论坛、门户网站或者博客等。 项目分为两部分:info-core和info-web,info-core就是上面所提到的原型,而info-web下有info-forum,是我仿照jforum开发的论坛,所以界面跟功能都跟jforum类似(有人会觉得重复发明轮子,其实跟jforum是有区别的,jforum是用freemarker+servlet实现的,而info-forum是用ssh来做的),如果有需求的话,将来会在info-web下添加其他的web产品。 info-core架构和技术: info-core由下往上分为以下几层: info-object-model:对象模型层,主要用到jpa的annotation来完成对象与数据表的映射(目前dao的实现使用hibernate的critirion api,以后会转为jpa的api来做)。 info-dao-api:dao api层,定义了增删改查的接口,与info-dao-hb分离的主要目的是为了方便的切换dao的实现框架,方便以后在GAE、AMS或新浪云之间切换。 该层同时还定义了初始化dao框架的接口。 info-dao-hb:dao api的hibernate实现层。通过继承DAOManager来完成框架的初始化。 info-dms:服务层,定义了各种服务接口用以提供不同服务,该层封装了dao的实现,同时也是以Spring IOC、AOP、Spring Security为实现方式解耦日志、权限、安全并扩展 info-core功能的基本。该层还提供了测试相关接口的test case。 info-security:安全层,主要提供登录info-core所用到的jaas相关类、权限验证相关类、增加department、category、info等数据时添加相应权限的aop advice及Spring Security登录的定制操作。 info-utilities:用以存放各层使用的公共util类。 info-ext-ranking:扩展info-core的等级机制,对于info-core来说并非核心,其主要用在论坛等需要等级的产品上。实现机制是通过使用java泛型、Spring IOC、AOP来扩展info-core。 info-context:info-core的会话层,用于管理用户登录后的session、新用户注册后但尚未激活的信息、发布信息后的间隔时间等,提供了获取info-dms服务的接口,也就是说对于底层的api的调用都要通过该层来完成,其目的是提供统一接口,防止开发人员直接调用底层接口绕过info-security等层(通过阅读源码会发现很多底层类的modifier是priviate或者package的,这样开发人员就不能直接实例化dao等对象),该层还提供了初次化系统所需数据的相关类。 info-aggregator:主要用以使用maven将以上工程安装并发布到仓库。工程内已提供maven需要的运行脚本。 info-web: 基于info-core开发的论坛,使用struts1开发(有兴趣的童鞋可以一起探讨升级到其他框架,达到网站url restful化) info-config: 存放info-parent,用以管理以上工程的版本信息、jar的版本、依赖关系等。 产品架构和技术情况如上,虽然工作5年多,但在实际项目中真正使用到以上其一或其二框架的公司并不多,也可能是我运气差了点,所以这个原型也算是我的一个愿望,希望在自己的实践中真正通过框架把每一层分好,加上对应的测试用例等,按照一个教科书版的流程来开发、测试、部署和发布产品。有兴趣的童鞋也可以加群 256176996一起完善开发新功能。 本想用这项目在家搭建搭建一个服务器为该产品提供相关信息的,无奈使用多年的台式机不给力,在安装多个软件后崩溃了,所以打算直接把dao的实现改层jpa的实现,放到GAE上。目前要是有兴趣的话只能自己部署了,部署步骤如下: 1. 下载Eclipse java ide,将info-core下的工程导入eclipse,再导入info-config下的info-parent。 2. 点击eclipse preferences,展开run/debug,点击String Substitution,点击new添加变量maven_exec,并把value指定到maven的mvn.bat,如:D:\info-project\maven-distribution\apache-maven-3.0.1\bin\mvn.bat(项目中已经自带了maven,目的是同一安装环境) 3. 选中info-parent工程,点击eclipse的external tools按钮,这时eclipse应该会自动导入info-aggregator\src\main\resources\eclipse_external_tool_setting下的脚本,点击mvn_install安装info-parent(如未自动导入,则点击eclipse_external_tool_setting下的任一脚本,在点击external tools configuration查看是否已导入) 4. 选中info-aggregator,执行mvn_install。 5. 至此,info-core已安装完毕,安装mysql数据库后创建bbs数据库。 6. 下载eclipse javaee ide,并安装maven插件,导入info-web下的info-forum,选中工程后右键选中maven--> update project configuration...更新工程,更新完成后就可启动tomcat。 7. 输入url localhost:8080/info-forum,使用id 1,密码123登录系统,至此,部署完成! 8. 之所以使用两个不同的ide,是为了说明info-core是独立于info-web的存在,因此开发由不同角色的开发人员进行。 |
|
zhucegep
2012-08-20
感谢LZ奉献。
|
|
Vertonur
2012-08-23
终于有人回复了,不客气,共同进步!
|
|
zhucegep
2012-08-24
没部署成功。
不会maven。 LZ能不能搞个完整的项目? |
|
Vertonur
2012-08-26
svn上的就是完整的项目,项目本身就分了模块啊,因为没有服务器,所以提供不了子工程的jar,以后会搞个的,有问题的话加群256176996先了解下
|
|
reggie_ysq
2012-09-19
谢谢分享,好好学习!!
|
|
reggie_ysq
2012-09-19
这个错,谁见过? 没百度到啊
Downloading: http://www.xlinecode.com:8081/content/groups/public/org/apache/maven/plugins/maven-source-plugin/2.0/maven-source-plugin-2.0.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21.264s [INFO] Finished at: Wed Sep 19 12:12:20 CST 2012 [INFO] Final Memory: 1M/4M [INFO] ------------------------------------------------------------------------ [ERROR] Plugin org.apache.maven.plugins:maven-source-plugin:2.0 or one of its dependencies could not be resolved: Could not transfer artifact org.apache.maven.plugins:maven-source-plugin:jar:2.0 from/to nexus (http://www.xlinecode.com:8081/content/groups/public): Error transferring file: Connection timed out: connect -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException |
|
Vertonur
2012-09-20
reggie_ysq 写道 这个错,谁见过? 没百度到啊
Downloading: http://www.xlinecode.com:8081/content/groups/public/org/apache/maven/plugins/maven-source-plugin/2.0/maven-source-plugin-2.0.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21.264s [INFO] Finished at: Wed Sep 19 12:12:20 CST 2012 [INFO] Final Memory: 1M/4M [INFO] ------------------------------------------------------------------------ [ERROR] Plugin org.apache.maven.plugins:maven-source-plugin:2.0 or one of its dependencies could not be resolved: Could not transfer artifact org.apache.maven.plugins:maven-source-plugin:jar:2.0 from/to nexus (http://www.xlinecode.com:8081/content/groups/public): Error transferring file: Connection timed out: connect -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException 连接超时了,应该是你更新的代码刚好在我提交新的url之后,再更新代码试试,http://www.xlinecode.com:8081/content/groups/public,这个url已换为http://www.xlinecode.com:8081/nexus/content/groups/public |