J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx

上传人:小飞机 文档编号:1662981 上传时间:2022-12-13 格式:DOCX 页数:64 大小:428.53KB
返回 下载 相关 举报
J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx_第1页
第1页 / 共64页
J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx_第2页
第2页 / 共64页
J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx_第3页
第3页 / 共64页
J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx_第4页
第4页 / 共64页
J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx》由会员分享,可在线阅读,更多相关《J2EE OA项目开发日记(缺少项目经验的可以仔细阅读).docx(64页珍藏版)》请在三一办公上搜索。

1、我现在正在做一个J2EE的OA项目,基于安全保密考虑,项目名称以下称为J2EEOA。现在,项目的系统需求和设计阶段都已做完,正处在编码阶段。在这个过程中有很多开发心得和体会,不吐不快。在这里,整理出来与大家一同分享。 文章中应用大量专业术语,所以在阅读前,您应有一定的基础知识,如java language、jsp、servlet、j2ee、ejb、ejb-ql、structs(MVC)、jboss、ant等。为了帮助大家更好的阅读,把相关知识链接列在下面。 1JBoss Application Server : http:/www.jboss.org/ 或者 2Java Language Sp

2、ecification 或者 3JDK 4J2EE 5ANT http:/jakarta.apache.org/ant/index.html 6Structs http:/jakarta.apache.org/struts/ 7JSP 8Servlet 9EJB 10EJB-QL 安装和配置JBoss Application Server今天的工作主要是安装JBoss。下面在介绍JBoss之后重点讲解配置JBoss Application Server后我总结出的经验。 为什么要选择JBoss作应用服务器?JBoss是一个符合标准的开放源码的J2EE应用服务器套件的名称,当前最新版本为3.0。

3、JAS套件包括JBossServer EJB v2.0 Container 和server, JBossMQ JMS 1.0 implemetation, JBossNS JNDI implemetation,JBossCMP advanced O/R mapper和JDBC data object storage implemetation以及JAAS-based JBossSX security frameeork。所有的JBoss应用程序都是100%纯java应用程序。 JBoss 3.0包括最新的微型JMX内核、完整的HTTP Server(Jetty或Tomcat)、JCA、EJB2

4、.0,是一个完整的、丰富的基于J2EE规范的应用服务器。 JBoss3.0遵循EJB1.1规范和部分EJB2.0规范。在这方面,它类似Suns J2SDK Enterprise Edition (J2EE),但JBoss服务器内核仅支持EJB服务器。JBoss内核不包括支持Severlet/JSP的WEB包容器,尽管它捆扎了Tomcat或Jetty。最小内核需要是指JBoss要求的最小内存和磁盘空间。JBoss可以运行在内存为64MRAM的机器上,要求很少的磁盘空间(包括源代码)。Suns J2EE要求最少128MRAM、31M磁盘空间。由于要求较小内存方面的原因,JBoss启动比Sun J2

5、EE快10倍并自带了一个数据库服务器(Hypersonic SQL Server),在JBoss启动时数据库服务器自动启动(Suns J2EE也自带了一个CloudScape SQL server,但CloudScape SQL server必须同Suns J2EE分开启动)。 JBoss完美的功能之一是它支持“热”部署。这个意思是部署一个Bean就是拷贝JAR文件到部署目录那么简单。如果你正在Bean已经部署的情况下进行这个操作,JBoss自动卸载Bean,再部署新版本的Bean。JBoss是基于LGPL的分发,也就是说它是完全免费的。 (编译自:http:/www.jboos.org) 安

6、装JAS3.0首先在Windows下安装JAS,安装成功后,再将JAS移植到Linux服务器上。 安装JDK1.3,在安装JAS之前,必须在JAS服务器上安装JDK。 下载JAS3.0的安装程序 首先去JBoss站点下载JAS3.0的安装程序,文件名jboss-3.0.0_tomcat-4.0.31.zip 下载地址1: http:/www.jboss.org/downloads.jsp 下载地址2: 释放安装程序 下载后,使用压缩工具WinRAR,把jboss-3.0.0_tomcat-4.0.31.zip释放到c:,释放之后,在c:下出现jboss-3.0.0_tomcat-4.0.3目录

7、,它就是JAS的主目录。 运行JAS JAS的主目录下有一个bin目录,它是JAS的运行入口,run.bat是JAS的windows版运行程序,ruh.sh是JAS的unix版(包括linux、solaris等操作系统)运行程序。双击run.bat文件,弹出运行窗口。 图片1 刚开始运行JAS的窗口图片2 运行中的JAS窗口JAS运行成功后,8080端口被Tomcat的Servlet引擎占用,8082端口被JBoss的代理管理占用。Tomcat占用的8080端口可以被修改的,下面将会介绍到。 JAS的目录及其描述 约定说明:在下面,我将JAS中的一些目录进行说明和描述。 JAS的主目录描述为$

8、jboss.home JAS的bin目录名称为bin,描述为$jboss.bin,它用来存放JAS的启动程序和运行时的包,在Windows下JAS的启动程序为run.bat,在Unix下JAS的启动程序为run.sh。 JAS的client目录名称为client,描述为$jboss.client,它用来存放JAS所用的一些包。 J2EE Application 所在目录名称描述为$jboss.configuration,JAS在缺省状态下的名称为default,可以通过在运行启动程序时加上参数“-c”来指定名称。例如: run.bat -c J2EEOAJAS的库目录描述为$jboss.hom

9、e/server/$jboss.configuration/lib,在JAS启动时,JAS会自动加载此目录下所有的库文件(扩展名为JAR的压缩文件)。 JAS的部署目录描述为$jboss.home/server/$jboss.configuration/deploy,此目录存放J2EE Application、EJB和一些配置文件,如mysql-service.xml、mail-service.xml、tomcat4-service.xml、jms-service.xml等。 JAS的配置目录描述为$jboss.home/server/$jboss.configuration/conf,此目录

10、存放JAS的配置文件,如jboss-service.xml、log4j.xml、standardjaws.xml、standardjboss.xml、standardjbosscmp-jdbc.xml等。 JAS日志目录描述为$jboss.home/server/$jboss.configuration/log,JAS在缺省状态下的日志文件名为server.log。,可以通过在修改log4j.xml来指定日志文件名,如下所示: 图片3 修改log4j.xml指定日志文件JAS的Tomcat目录描述为$jboss.home/catalina,它用来提供Servlet/JSP引擎。 下面是一个简单

11、的JBoss目录结构图: |-bin|-client|-server |-$jboss.configuration|-conf|-deploy|-log让JBoss和自带的Tomcat同时运行 JAS3.0自带了一个Tomcat Web包容器,但初装时,Tomcat是不能单独启动的,必须在JAS内运行。通过如下配置可以让Tomcat单独运行。 修改JAS下的tomcat4-service.xml文件,将Tomcat的Http端口设为9090,下面是tomcat4-service.xml的部分代码: 图片4 修改Tomcat的Http端口 拷贝$jboss.home/lib目录下的两个JAR文件

12、jaxp.jar、crimson.jar到$jboss.home/catalina/common/lib目录。 分别启动Tomcat和JBoss。在$jboss.home/catalina/bin目录下输入startup.bat。tomcat运行了,它占用了8080端口。在$jboss.home/bin目录下输入run.bat,JBoss也运行了,它的HTTP 引擎占用了9090端口。 到此JAS已经可以用了,下面来配置JAS连接数据库。 连接数据库说明:项目要求的数据库为Mysql数据库,故必须将JAS和mysql数据库服务器连接起来。 下载mysql的jdbc驱动程序 由于用jdbc连接m

13、ysql要使用org.gjt.mm.mysql.Driver驱动程序,故先下载mysql的jdbc驱动程序,按下面的地址将文件mm.mysql-2.0.13-you-must-unjar-me.jar下载下来。 下载地址: 释放驱动程序 上面下载的驱动程序包括了mm.mysql-2.0.13-bin.jar、开放的源代码和一个LICENSE,用WinRAR释放压缩文件,其中mm.mysql-2.0.13-bin.jar就是mysql的jdbc驱动程序,驱动程序文件名中的2.0.13是驱动程序的版本号。 配置驱动程序 方法一:(推荐使用此方法) 将mm.mysql-2.0.13-bin.jar拷

14、贝到JAS的库目录即$jboss.home/server/$jboss.configuration/lib 方法二: 在系统变量中加入JBOSS_CLASSPATH,值为mm.mysql-2.0.13-bin.jar的位置: 例如: 在Windows操作系统下set JBOSS_CLASSPATH= c:J2EEjdbcmm.mysql-2.0.13mm.mysql-2.0.13-bin.jar图片5 设置系统变量JBOSS_CLASSPATH在Unix操作系统下setenv JBOSS_CLASSPATH /usr/local/jdbc/mm.mysql-2.0.13-bin.jar在Lin

15、ux操作系统下JBOSS_CLASSPATH=/usr/local/jdbc/mm.mysql-2.0.13-bin.jarexport JBOSS_CLASSPATH安装Mysql服务 $jboss.homedocsexamplesjca目录存放着JAS提供的数据库映射服务配置文件,包括Oracle、DB2、Informix、MsSQL、Mysql、Hypersonic SQL、Postgres SQL等很多期望的数据库。将mysql-service.xml文件拷贝到$jboss.home/server/$jboss.configuration/deploy目录。 配置mysql-servi

16、ce.xml 在mysql-service.xml中修改以下几项的值,其它项是否要改根据情况而定。 JndiName ConnectionURL DriverClass UserName Password myProjectDS jdbc:mysql:/192.168.0.6/myProject org.gjt.mm.mysql.Driver test test jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper 源代码:立即下载 到此,所有的准备工作都做好了,现在只需运行JAS,看一看这台连接Mys

17、ql数据库的JAS是否配好了。 如果JAS在Windows下运行正常,就把JAS移植到Linux服务器上。在Linux 服务器上运行JAS要用run.sh来启动。开发前的约定(1)今天进入可开发前的准备阶段。在开发项目前,要求每位开发小组成员都必须先阅读以下约定,严格按以下约定来进行开发。 系统框架系统总框架采用SUN J2EE框架,使用JAVA/XML技术和组件技术, 基于Application server开发。 项目中的程序必须严格按J2EE1.3规范来编码,EJB建议采用2.0规范编码,尽可能多使用EJB 模式设计,参考技术文档如下: 1.J2EE Tutorial j2ee-1_3-

18、doc-tutorial-draft5.pdf 2.JBoss 3.0Quick Start Guide 3.EJB Design Patterns 开发环境测试用Application server采用JAS,JAS 配置于Linux OS下,IP地址:192.168.0.6。登录用户名:J2EEOA,密码:J2EEOA。登录ftp工具建议使用SSH Secure Shell或LeapFTP,ftp地址为192.168.0.6:22。 项目开发源码目录为/home/local/jboss/applications/J2EEOA/src,项目开发文档目录为/home/product/J2EEO

19、A/。 数据库服务器IP为192.168.0.222,数据库采用Mysql,管理工具为phpadmin,登录数据库的用户名为test,密码为test。 源代码目录规范每位开发小组成员一定要绝对遵守以下创建源代码目录的规范。 项目开发目录结构简图: |-apps |-J2EEOA |-admin|-components |-a component|-modules |-a module|-lib |-ant|-build.properties图片6 项目开发目录结构图项目开发目录结构说明: (说明:根目录)|-apps (说明:此目录下放应用程序的代码) |-J2EEOA (说明:此目录为放J2

20、EEOA应用程序的代码) |-admin (说明:此目录为放项目的admin应用程序的代码)|-components (说明:此目录下放应用程序组件的代码) |-a component (说明:此目录为放一个组件的代码)|-modules (说明:此目录下放应用程序模块的代码) |-a module (说明:此目录为放一个模块的代码)|-lib (说明:此目录下放项目开发工具) |-ant (说明:Ant工具,包括bin和lin目录)|-build.properties (说明:此文件定义项目开发共用的环境变量,如jboss.home、jboss.configuration、servlet-l

21、ib.path等)模块、组件开发目录结构简图: |-build|-etc |-multi-langs|-lib |-docs |-ejb |- META-INF |-j2ee |-META-INF |-web |-WEB-INF|-src |-ejb |-javabean |-servlet |-web|-build.bat|-build.sh|-build.xml图片7 模块、组件目录结构图说明:src、etc目录和build.bat、build.sh、build.xml为开发人员建立的目录,build和lib目录为由ant工具生成的目录。 模块、组件开发目录结构说明 (说明:一个模块或一个

22、组件的根目录)|-build (说明:保存由ant工具生成的扩展名为jar、war、ear等文件)|-etc (说明:存放部署文件,如web.xml、ejb-jar.xml、application.xml、jaws.xml、jbosscmp-jdbc.xml等) |-multi-langs (说明:存放多语言资源文件,扩展名为properties,)|-lib (说明:保存由ant工具生成的API文件、class文件等) |-docs |-api |-ejb |- META-INF |-j2ee |-META-INF |-web |-WEB-INF|-src (说明:存放源代码,包括java和

23、jsp代码,下面有四个目录。) |-ejb (说明:采用EJB进行开发,存放EJB和Helper Classes源代码。) |-javabean (说明:采用Javabean进行开发,存放Javabean和Helper Classes源代码。) |-servlet (说明:存放Servlet源代码。) |-web (说明:存放JSP源代码。)|-build.bat (说明:在Window OS下,进行build的文件。)|-build.sh (说明:在Unix OS下,进行build的文件。)|-build.xml (说明:Ant工具要build的目标文件。)应用程序开发目录结构简图: |-b

24、uild|-etc|-lib |-docs |-ejb |- META-INF |-j2ee |-META-INF |-web |-WEB-INF|-team |-a member|-ejb|-javabean|-web|-build.bat|-build.sh|-build.xml|-build.properties图片8 应用程序目录结构图应用程序开发目录结构 1. 由于项目由多个程序员一起来进行编码,所以应用程序开发目录结构和模块、组件开发目录结构的不一样。 2. 应用程序开发目录结构没有src目录,但多了一个team目录,此目录存放所有程序员的classes和Jsp代码。 3. 应用程

25、序开发目录结构下build.xml和模块、组件开发目录结构下的build.xml有很大不同。 4. 由项目组长负责管理etc目录、build.xml、build.bat、build.sh、build.properties,程序员分别管理team目录下的属于自己的目录,如程序员tom管理team/tom目录。开发前的约定(2)build.xml编码规范 应用程序目录下的build.xml 源代码:应用程序目录下的build.xml规范模板 说明:在建立build.xml时,组长只需修改创建的时间和变量ProjectName等。 模块、组件目录下的build.xml 源代码:模块、组件目录下的bu

26、ild.xml规范模板 说明:在建立build.xml时,开发人员只需修改创建的时间和和变量ProjectName、componentName等。 编码规范 项目中的JAVA源代码必须按JAVA开发规范。 项目中的JSP代码必须按JSP开发规范。 每位开发小组成员在开发项目时都严格按此规范来进行编写程序,让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。 每位开发小组成员一定要绝对遵守这个规范。当实际应用与下面的规范相抵触时,记录下原因、潜在后果,以及符合规范需要的条件,但必须是在让程序有良好的可读性的前提下。 功能模块在做业务逻辑模块前,先把一些准备工作做

27、出来: 建立一些公用的bean(项目中称为系统控制器controller),包名为com.cwap.oa.controller.*,提供给系统各模块使用。包括对时间、字符的操作,调试器,软件国际化,多语言版本,系统的WEB外壳,MVC模式的Servlet和Action,对WEB页面显示的控制如树结构、路径结构;等等。 建立一个序列发生器,包名为com.cwap.oa.sequencegenerator.*,提供给bean使用,它用来产生一个唯一的ID,而且也可用来计数,也就是把它当成计数器使用。介绍如何取id的方法的文字要写在bean的代码内,以便生成API后供其它开发人员参阅。 建立一个Se

28、rverFacade,它为EJB Home提供统一的接口。ServerFacade为程序要用到的所有EJB的home handle提供缓存,提高访问效率。以后查找JNDI Name的方法都应写在接口里,调用时直接从接口调用。 建立一个翻页控制器,包名为com.cwap.oa.controller.web.page*,用来进行分页显示的管理,以后页面中的分页都由翻页控制器管理。 异常处理和日志 程序中所有的异常处理使用统一的调试器,bean的名称为com.cwap.oa.controller.util.Debug,用法见项目API。 程序中所有的日志使用Jakarta-log4j管理,包的名称为

29、log4j-1.2.5.jar 官方URL:http:/jakarta.apache.org/log4j/docs/index.html Session 放在session中的变量统一放在一个bean里存储,不直接把session变量名称放在JSP、Servlet或Bean内,存储session变量名称的bean为com.cwap.oa.controller.web.util.WebKeys,取session变量名的方法为getXX()。 取session变量的值的方法统一放在一个bean里,bean的名称为com.cwap.oa.controller.web.util.JSPUtil,取se

30、ssion变量值的方法为getXX(),之后要取session变量值就调用JSPUtil中对应的方法。 当前系统中已知的session变量名有userid、userName、locale、skin等,userid为用户标识,userName为用户名称,locale为用户选择的地域,skin为用户选择的界面风格。 DAO使用DAO封装SQL语言对数据库的直接操作,DAO采用Factory模式编写。 组件所有的业务逻辑使用组件技术。每个组件内同时提供EJB版本和DAO版本两种的方法,不推荐直接使用EJB版本和DAO版本的方法。 多语言版本 Bean、Servlet、JSP中的多语言文字采用分离技术

31、,将多语言文字放在资源文件中,保存目录为/WEB-INF/classes/multi-langs或其它目录。 当前支持的语言有三种:简体中文(zh_CN)、繁体中文(zh_HK)、英文(en_US)。 多语言管理器的名称为com.cwap.oa.controller.util.MultiLangsString,使用方法见本项目API。 WEB外壳 JSP页面中的图片、CSS、JS等文件都应放在统一目录,目录为/skin/skinName/skinLanguage,其中skinName为外壳名称,skinLanguage为外壳语言版本,例如/skin/green/zh_CN 图片放在images

32、目录里,CSS文件放在css目录里,JS脚本放在js目录里,其它资源(如声音、视频、Flash文件等)存放方法见项目API。 外壳管理器为com.cwap.oa.controller.web.skin.WebSkin,调用方法统一接口为com.cwap.oa.controller.web.util.JSPUtil。 在线帮助 在线帮助管理器为com.cwap.oa.help.*,调用方法统一接口为com.cwap.oa.help.client.HelpClientHelper。 每一个JSP页面中提供一个在线帮助链接,用户点击它直接进入到在线帮助中心。 用户管理 建立一个取用户名称的页面,功能

33、包括只取一个用户和取多个用户。 打开取用户名称页面的方法,使用页面脚本,javascript:return openWinToGetEmployee(frame,id,name,num),当num为0,代表可以取多个用户,否则,只能取1个用户。 权限管理 调用方法统一接口为com.cwap.oa.controller.web.util.JSPUtil,检查用户是否有权限的方法为JSPUtil.isPermission(userid, permissions) JSP中检验用户身份采用include方式,include的文件为checkUser.jsp 检验用户身份是否是一般用户,调用方法为 检

34、验用户身份是否是管理员,调用方法为 检验用户身份是否是超级管理员,调用方法为 如何完成多语言和多界面风格今天在开发过程中遇到了些小麻烦:在需求分析中,有这样一个功能“网页风格个性化功能:用户可以选择网页的风格、颜色等”。为了实现此功能,系统中设计了一个外壳管理器。用户选择外壳和语言后,把参数保存在session中,外壳管理器定位JSP页面中图片等资源的路径。美工在设计Demo时,将页面设计成若干界面风格,如包括天蓝色、银白色、翡翠绿、粉红色、紫罗兰、金属、古典、现代等。 系统如何支持多语言版本呢?多语言资源包括文字、标点符号、日期、货币符号、包含文字的图片、声音、视频、图形等。 1.文字、标点

35、符号、日期、货币符号等资源放入资源文件中,由多语言管理器进行统一管理。 2.包含文字的图片、声音、视频、图形等资源放在WEB外壳中,由外壳管理器进行管理。 由外壳管理的资源也可采用多语言管理器来管理。这里采用外壳管理器管理的原因,主要是考虑到WEB页面风格的因素以及WEB的易维护性。 这里以显示多语言文字做一个简单的示例: import com.cwap.oa.controller.util.MultiLangsString; import com.cwap.oa.controller.util.MultiLangsUtil; public class MultiLangsDemo publi

36、c static void main(String argv) MultiLangsString multiLangs; if(argv.length0)multiLangs = new MultiLangsString(main,argv0);elsemultiLangs = new MultiLangsString(main,en_US);if(multiLangs != null)System.out.println(multiLangs.getStringWithConvert(MAIN_SYSTEM_BUSILY); 运行结果画面: 显示多语言文字的Demo程序源代码:立即下载 这里以在JSP文件中显示多语言图片做一个简单的示例: %WebSkin webSkin = new WebSkin(a,zh_CN);if( webSkin != null ) out.print(简体版本:);WebSkin webSkin_en_US =new WebSkin(a,en_US);if( w

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号