OA 项目开发日记

目录

一、运行环境的搭建

1、安装JAS3.0

2、JAS的目录及其描述

3、让JBoss和自带的Tomcat同时运行

4、连接数据库

4.1  下载mysql的jdbc驱动程序

4.4 安装Mysql服务

4.5 配置mysql-service.xml

二、系统框架

1、 开发环境

2、源代码目录规范

2.1 项目开发目录结构简图

2.2 项目开发目录结构说明

2.3 模块、组件开发目录结构简图

2.4 模块、组件开发目录结构说明

2.5 应用程序开发目录结构简图

2.6 应用程序开发目录结构

3、功能模块

3.1 异常处理和日志

3.2 Session

3.3 DAO

3.4 组件

3.5 多语言版本

3.6 WEB外壳

3.7 在线帮助

3.8 用户管理


文章中应用大量专业术语,所以在阅读前,您应有一定的基础知识,如java languagejspservletj2eeejbejb-qlstructs(MVC)jbossant等。为了帮助大家更好的阅读,把相关知识链接列在下面。

1JBoss Application Server :
This Week in JBoss - February 10th 2022 - JBoss.org
或者http://sourceforge.net/projects/jboss/
2Java Language Specification
Java SE Specifications
或者Oracle Java Technologies | Oracle
3JDK
Oracle Java Technologies | Oracle
4
J2EE
Oracle Java Technologies | Oracle
5
ANT
Apache Ant - Welcome
6
Structs
Welcome to the Apache Struts project
7
JSP
Oracle Java Technologies | Oracle
8
Servlet
Java Servlet Technology Overview
9
EJB
Oracle Java Technologies | Oracle
10
EJB-QL
Oracle Java Technologies | Oracle

一、运行环境的搭建

安装和配置JBoss Application Server
今天的工作主要是安装JBoss。下面在介绍JBoss之后重点讲解配置JBoss Application Server后我总结出的经验。

为什么要选择JBoss作应用服务器?


        JBoss是一个符合标准的开放源码的J2EE应用服务器套件的名称,当前最新版本为3.0。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.0,是一个完整的、丰富的基于J2EE规范的应用服务器。

        JBoss3.0遵循EJB1.1规范和部分EJB2.0规范。在这方面,它类似Sun's 'J2SDK Enterprise Edition' (J2EE),但JBoss服务器内核仅支持EJB服务器。JBoss内核不包括支持Severlet/JSP的WEB包容器,尽管它捆扎了Tomcat或Jetty。最小内核需要是指JBoss要求的最小内存和磁盘空间。JBoss可以运行在内存为64MRAM的机器上,要求很少的磁盘空间(包括源代码)。Sun's J2EE要求最少128MRAM、31M磁盘空间。由于要求较小内存方面的原因,JBoss启动比Sun J2EE快10倍并自带了一个数据库服务器(Hypersonic SQL Server),在JBoss启动时数据库服务器自动启动(Sun's J2EE也自带了一个CloudScape SQL server,但CloudScape SQL server必须同Sun's J2EE分开启动)。

        JBoss完美的功能之一是它支持“热”部署。这个意思是部署一个Bean就是拷贝JAR文件到部署目录那么简单。如果你正在Bean已经部署的情况下进行这个操作,JBoss自动卸载Bean,再部署新版本的Bean。JBoss是基于LGPL的分发,也就是说它是完全免费的。

1、安装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: JBoss Community download | SourceForge.net

·释放安装程序

        下载后,使用压缩工具WinRAR,把jboss-3.0.0_tomcat-4.0.31.zip释放到c:\,释放之后,在c:下出现jboss-3.0.0_tomcat-4.0.3目录,它就是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端口可以被修改的,下面将会介绍到。


2、JAS的目录及其描述


约定说明:在下面,我将JAS中的一些目录进行说明和描述。

JAS的主目录描述为${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 J2EEOA



·JAS的库目录描述为${jboss.home}/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,此目录存放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来指定日志文件名,如下所示:

 

<appender name="FILE" class=

  "org.jboss.logging.appender.DailyRollingFileAppender">

    <param name="File" value="${jboss.server.home.dir}/log/server.log"/>

<param name="Append" value="false"/>

  </appender>

图片3 修改log4j.xml指定日志文件



·JAS的Tomcat目录描述为${jboss.home}/catalina,它用来提供Servlet/JSP引擎。

·下面是一个简单的JBoss目录结构图:

 

\

|--bin

|--client

|--server

  |--${jboss.configuration}

|--conf

|--deploy

|--log



3、让JBoss和自带的Tomcat同时运行
 

        JAS3.0自带了一个Tomcat Web包容器,但初装时,Tomcat是不能单独启动的,必须在JAS内运行。通过如下配置可以让Tomcat单独运行。

·        修改JAS下的tomcat4-service.xml文件,将Tomcat的Http端口设为9090,下面是tomcat4-service.xml的部分代码:

<!-- A HTTP Connector on port 9090 -->

            <Connector className =

"org.apache.catalina.connector.http.HttpConnector"

               port = "9090" minProcessors = "3" maxProcessors = "10"

               enableLookups = "true"

               acceptCount = "10" debug = "0" connectionTimeout = "60000"/>

图片4 修改Tomcat的Http端口



·         拷贝${jboss.home}/lib目录下的两个JAR文件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连接数据库。

4、连接数据库


说明:项目要求的数据库为Mysql数据库,故必须将JAS和mysql数据库服务器连接起来。


4.1  下载mysql的jdbc驱动程序


        由于用jdbc连接mysql要使用org.gjt.mm.mysql.Driver驱动程序,故先下载mysql的jdbc驱动程序,按下面的地址将文件mm.mysql-2.0.13-you-must-unjar-me.jar下载下来。

下载地址:MM.MySQL download | SourceForge.net

4.2 释放驱动程序

上面下载的驱动程序包括了mm.mysql-2.0.13-bin.jar、开放的源代码和一个LICENSE,用WinRAR释放压缩文件,其中mm.mysql-2.0.13-bin.jar就是mysql的jdbc驱动程序,驱动程序文件名中的2.0.13是驱动程序的版本号。

4.3 配置驱动程序

·方法一:(推荐使用此方法)

将mm.mysql-2.0.13-bin.jar拷贝到JAS的库目录即${jboss.home}/server/${jboss.configuration}/lib

·方法二:

在系统变量中加入JBOSS_CLASSPATH,值为mm.mysql-2.0.13-bin.jar的位置:

例如:
 

在Windows操作系统下

set JBOSS_CLASSPATH= c:\J2EE\jdbc\mm.mysql-2.0.13\mm.mysql-2.0.13-bin.jar

图片5 设置系统变量JBOSS_CLASSPATH



 

在Unix操作系统下

setenv JBOSS_CLASSPATH /usr/local/jdbc/mm.mysql-2.0.13-bin.jar



 

在Linux操作系统下

JBOSS_CLASSPATH=/usr/local/jdbc/mm.mysql-2.0.13-bin.jar

export JBOSS_CLASSPATH



4.4 安装Mysql服务

${jboss.home}\docs\examples\jca目录存放着JAS提供的数据库映射服务配置文件,包括Oracle、DB2、Informix、MsSQL、Mysql、Hypersonic SQL、Postgres SQL等很多期望的数据库。将mysql-service.xml文件拷贝到${jboss.home}/server/${jboss.configuration}/deploy目录。

4.5 配置mysql-service.xml

在mysql-service.xml中修改以下几项的值,其它项是否要改根据情况而定。

·JndiName

·ConnectionURL

·DriverClass

·UserName

·Password

 

<depends optional-attribute-name="ManagedConnectionFactoryName">

      <!--embedded mbean-->

      <mbean code="org.jboss.resource.connectionmanager.RARDeployment"

      name="jboss.jca:service=LocalTxDS,name=MySqlDS">

        <attribute name="JndiName"> myProjectDS</attribute>

        <attribute name="ManagedConnectionFactoryProperties">

          <properties>

            <config-property name="ConnectionURL" type="java.lang.String">

jdbc:mysql://192.168.0.6/myProject</config-property>

            <config-property name="DriverClass"

type="java.lang.String">org.gjt.mm.mysql.Driver</config-property>

            <!--set these only if you want only default logins, not through JAAS -->

            <config-property name="UserName"

type="java.lang.String">test</config-property>

            <config-property name="Password"

type="java.lang.String">test</config-property>

          </properties>

        </attribute>

<!--Below here are advanced properties -->

        <!--hack-->

        <depends optional-attribute-name="OldRarDeployment">

jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper</depends>

      </mbean>

</depends>



源代码:立即下载

        到此,所有的准备工作都做好了,现在只需运行JAS,看一看这台连接Mysql数据库的JAS是否配好了。

        如果JAS在Windows下运行正常,就把JAS移植到Linux服务器上。在Linux 服务器上运行JAS要用run.sh来启动。

二、系统框架


        系统总框架采用SUN J2EE框架,使用JAVA/XML技术和组件技术, 基于Application server开发。

·项目中的程序必须严格按J2EE1.3规范来编码,EJB建议采用2.0规范编码,尽可能多使用EJB 模式设计,参考技术文档如下:

1.《J2EE Tutorial》

j2ee-1_3-doc-tutorial-draft5.pdf

2.《JBoss 3.0Quick Start Guide》

3.《EJB Design Patterns》

1、 开发环境


        ·测试用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/J2EEOA/。

· 数据库服务器IP为192.168.0.222,数据库采用Mysql,管理工具为phpadmin,登录数据库的用户名为test,密码为test。

2、源代码目录规范


每位开发小组成员一定要绝对遵守以下创建源代码目录的规范。
 

2.1 项目开发目录结构简图

 

\

|--apps

  |--J2EEOA

  |--admin

|--components

  |--a component

|--modules

  |--a module

|--lib

  |--ant

|--build.properties

图片6 项目开发目录结构图



2.2 项目开发目录结构说明
 

\ (说明:根目录)

|--apps (说明:此目录下放应用程序的代码)

  |--J2EEOA (说明:此目录为放J2EEOA应用程序的代码)

  |--admin (说明:此目录为放项目的admin应用程序的代码)

|--components (说明:此目录下放应用程序组件的代码)

  |--a component (说明:此目录为放一个组件的代码)

|--modules (说明:此目录下放应用程序模块的代码)

  |--a module (说明:此目录为放一个模块的代码)

|--lib (说明:此目录下放项目开发工具)

  |--ant (说明:Ant工具,包括bin和lin目录)

|--build.properties

(说明:此文件定义项目开发共用的环境变量,

如jboss.home、jboss.configuration、servlet-lib.path等)



2.3 模块、组件开发目录结构简图

 

\

|--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工具生成的目录。


2.4 模块、组件开发目录结构说明

 

\ (说明:一个模块或一个组件的根目录)

|--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和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的目标文件。)



2.5 应用程序开发目录结构简图

 

\

|--build

|--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 应用程序目录结构图



2.6 应用程序开发目录结构

  1. 由于项目由多个程序员一起来进行编码,所以应用程序开发目录结构和模块、组件开发目录结构的不一样。
  2.  应用程序开发目录结构没有src目录,但多了一个team目录,此目录存放所有程序员的classes和Jsp代码。
  3.  应用程序开发目录结构下build.xml和模块、组件开发目录结构下的build.xml有很大不同。
  4.  由项目组长负责管理etc目录、build.xml、build.bat、build.sh、build.properties,程序员分别管理team目录下的属于自己的目录,如程序员tom管理team/tom目录。

3、功能模块


在做业务逻辑模块前,先把一些准备工作做出来:

建立一些公用的bean(项目中称为系统控制器controller),包名为com.cwap.oa.controller.*,提供给系统各模块使用。包括对时间、字符的操作,调试器,软件国际化,多语言版本,系统的WEB外壳,MVC模式的Servlet和Action,对WEB页面显示的控制如树结构、路径结构;等等。

建立一个序列发生器,包名为com.cwap.oa.sequencegenerator.*,提供给bean使用,它用来产生一个唯一的ID,而且也可用来计数,也就是把它当成计数器使用。介绍如何取id的方法的文字要写在bean的代码内,以便生成API后供其它开发人员参阅。

建立一个ServerFacade,它为EJB Home提供统一的接口。ServerFacade为程序要用到的所有EJB的home handle提供缓存,提高访问效率。以后查找JNDI Name的方法都应写在接口里,调用时直接从接口调用。

建立一个翻页控制器,包名为com.cwap.oa.controller.web.page*,用来进行分页显示的管理,以后页面中的分页都由翻页控制器管理。

3.1 异常处理和日志


· 程序中所有的异常处理使用统一的调试器,bean的名称为com.cwap.oa.controller.util.Debug,用法见项目API。

· 程序中所有的日志使用Jakarta-log4j管理,包的名称为log4j-1.2.5.jar

官方URL:http://jakarta.apache.org/log4j/docs/index.html

3.2 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,取session变量值的方法为getXX(),之后要取session变量值就调用JSPUtil中对应的方法。

· 当前系统中已知的session变量名有"userid"、"userName"、"locale"、"skin"等,userid为用户标识,userName为用户名称,locale为用户选择的地域,skin为用户选择的界面风格。

3.3 DAO


使用DAO封装SQL语言对数据库的直接操作,DAO采用Factory模式编写。

3.4 组件


所有的业务逻辑使用组件技术。每个组件内同时提供EJB版本和DAO版本两种的方法,不推荐直接使用EJB版本和DAO版本的方法。

3.5 多语言版本


· Bean、Servlet、JSP中的多语言文字采用分离技术,将多语言文字放在资源文件中,保存目录为/WEB-INF/classes/multi-langs或其它目录。

· 当前支持的语言有三种:简体中文(zh_CN)、繁体中文(zh_HK)、英文(en_US)。

· 多语言管理器的名称为com.cwap.oa.controller.util.MultiLangsString,使用方法见本项目API。

3.6 WEB外壳


· JSP页面中的图片、CSS、JS等文件都应放在统一目录,目录为/skin/skinName/skinLanguage,其中skinName为外壳名称,skinLanguage为外壳语言版本,例如/skin/green/zh_CN

· 图片放在images目录里,CSS文件放在css目录里,JS脚本放在js目录里,其它资源(如声音、视频、Flash文件等)存放方法见项目API。

· 外壳管理器为com.cwap.oa.controller.web.skin.WebSkin,调用方法统一接口为com.cwap.oa.controller.web.util.JSPUtil。

3.7 在线帮助


· 在线帮助管理器为com.cwap.oa.help.*,调用方法统一接口为com.cwap.oa.help.client.HelpClientHelper。

· 每一个JSP页面中提供一个在线帮助链接,用户点击它直接进入到在线帮助中心。

3.8 用户管理



· 建立一个取用户名称的页面,功能包括只取一个用户和取多个用户。

· 打开取用户名称页面的方法,使用页面脚本,"javascript:return openWinToGetEmployee(frame,id,name,num)",当num为0,代表可以取多个用户,否则,只能取1个用户。

3.9 权限管理



· 调用方法统一接口为com.cwap.oa.controller.web.util.JSPUtil,检查用户是否有权限的方法为JSPUtil.isPermission(userid, permissions)

· JSP中检验用户身份采用include方式,include的文件为checkUser.jsp

检验用户身份是否是一般用户,调用方法为

 

<jsp:include page="../include/checkUser.jsp">

  <jsp:param name="type" value="user" />

</jsp:include>



检验用户身份是否是管理员,调用方法为

 

<jsp:include page="../include/checkUser.jsp">

  <jsp:param name="type" value="manager" />

</jsp:include>



检验用户身份是否是超级管理员,调用方法为

 

<jsp:include page="../include/checkUser.jsp">

  <jsp:param name="type" value="administrator" />

</jsp:include>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trouble-Solver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值