浏览 10232 次
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-16
·由于PO穿越了DAO、SessionBean、Action,所以所有PO打成一个JAR文件,加到应用服务器启动的CLASSPATH和WAR的WEB-INF\lib下,为了协作开发的方便,也可以各模块的PO分开打成不同的JAR; ·各模块的SessionBean和DAO分别打成EJB-JAR,部署到容器; ·SessionBean的远程接口、Home接口等分模块打成JAR加到WAR的WEB-INF\lib下; ·共用的工具类、系统参数的单件类等单独打一个JAR,也加到应用服务器启动的CLASSPATH和WAR的WEB-INF\lib下 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-17
muziq 写道 系统实例:4-5个子模块,模块之间的实体有一定的关联,大致按模块分组开发,采用Struts、Stateless SessionBean、Hibernate等技术。我初步设想的部署方案是:
·由于PO穿越了DAO、SessionBean、Action,所以所有PO打成一个JAR文件,加到应用服务器启动的CLASSPATH和WAR的WEB-INF\lib下,为了协作开发的方便,也可以各模块的PO分开打成不同的JAR; ·各模块的SessionBean和DAO分别打成EJB-JAR,部署到容器; ·SessionBean的远程接口、Home接口等分模块打成JAR加到WAR的WEB-INF\lib下; ·共用的工具类、系统参数的单件类等单独打一个JAR,也加到应用服务器启动的CLASSPATH和WAR的WEB-INF\lib下 我想你大概考虑到团队开发的情况了。如果考虑这个问题就比较复杂,因为团队的规模不同,代码的分模块管理方法也不同,例如团队非常大,需要按照不同的功能模块分组,或者团队规模比较小,按照J2EE不同层开发人员进行分组,这都会影响到代码如何打包和管理。如果抛开团队管理,还要分开发的时候怎么管理和部署的时候怎么管理: 我建议如下: 如果是开发的时候 1、DAO接口,DAO接口实现类(Hibernate实现),PO类统统都不打包,放在App Server的CLASSPATH下,由App ClassLoader去load。 2、每个SLSB单独打包发布 3、WAR下面只放SLSB的接口类包,也是每个SLSB一个jar包 部署的时候 统统打在一起做成一个EAR包进行运行环境的部署。 我觉得你的方案中有几个地方有点小毛病: 1、同时在App Server CLASSPATH下面放置PO和Web App CLASSPATH下面放置PO,那么对于Web App来说,他会优先load自己目录下面的PO,如果两个地方的PO版本是一致的话,完全没有必要同时维护两套。 2、不要同时在App Server CLASSPATH下面放置PO和Web App CLASSPATH下面放置Singleton类,这就是我说的对Singleton Class Loader误用导致Singleton失效的情况。Web App优先load自己目录下面的Singleton,而该Singleton是由Web Class Loader调入,而系统其它的应用,例如EJB是load不到该Singleton的,当EJB运行的时候,会去初始化App Server CLASSPATH下面的那个Singleton类,造成重复初始化。 |
|
返回顶楼 | |
发表时间:2003-10-17
robbin 写道 我觉得你的方案中有几个地方有点小毛病:
说的没错。多谢robbin!
... |
|
返回顶楼 | |
发表时间:2003-10-21
cxhz_cn 写道 1、DAO接口,DAO接口实现类(Hibernate实现),PO类统统都不打包,放在App Server的CLASSPATH下,由App ClassLoader去load。
我一直认为DAODAO接口实现类里面其实是封装的是对某张表的Insert,update,Select,Delete的操作,既然采用的Hibernate了,本身就是一个DAO,那么为啥还要用DAO 对于这个问题,前面有很多讨论,search一下。 |
|
返回顶楼 | |