• 图纸下载
  • 专业文献
  • 行业资料
  • 教育专区
  • 应用文书
  • 生活休闲
  • 杂文文章
  • 范文大全
  • 作文大全
  • 达达文库
  • 文档下载
  • 音乐视听
  • 创业致富
  • 体裁范文
  • 当前位置: 达达文档网 > 生活休闲 > 正文

    基于J2EE某公司遗留管理系统改造升级分析与实现

    时间:2020-12-07 03:51:28 来源:达达文档网 本文已影响 达达文档网手机站

    米扬

    [摘    要] 针对某公司已建业务系统源码不全,原开发公司和人员均不维护,但此公司又亟需使用此系统的局面,通过相关分析和技术获得源码,最终成功改造升级系统并解决相关业务问题,让其公司的业务效率得到进一步提升。

    [关键词] J2EE;源代码;反编译;web开发;Eclipse;遗留系统

    doi :
    10 . 3969 / j . issn . 1673 - 0194 . 2020. 19. 075

    [中图分类号] TP315    [文献标识码]  A      [文章编号]  1673 - 0194(2020)19- 0184- 02

    0      引    言

    源碼是系统开发的重要基石,在较多的信息工程项目中,业务方往往仅重视其代码入档,但入档代码能否运行并没有去验证,一旦承担此项目的开发公司由于经营等原因不再进行保障,此时再拿出验收时的源代码才发现运行不起,给业务方造成较大损失。当源码无法运行的情况已经发生时,多数接手的开发公司会选择重新建设一套新的代码来替换现有系统,但处于系统部分功能还能使用,业务方不允许重建,加之系统本身又存在诸多bug,却要求较短时间解决的多种困难境地情况时,一味地重新开发就显得不现实,对于这种遗留系统[1],文章不涉及具体的代码编写,主要是通过分析和相关技术来阐述遇到此种情况的系统升级改造的一种解决思路和方式方法。

    1      系统现状分析

    改造升级任何系统前,首先需对系统处于的现状进行一次全面问诊工作。主要从硬件环境、网络环境、软件环境、系统数据、软件操作,最后到业务熟悉度六个层面进行摸底。

    (1)硬件环境

    系统是部署在物理服务器还是虚拟服务器上?配置情况怎样?笔者主持的系统是部署在某公司的Vmware虚拟化平台提供的系统计算、存储服务。

    (2)网络环境

    网络环境主要查看是外网还是公司内网,独立IP地址还是NAT转换的内网地址?网络连通性、延迟性怎样?特别是网速会在一定程度上影响用户体验,需重点诊断。此系统的网络接入为虚拟网络架构下的IP,千兆内网环境,与其下属单位网络连通状况良好,延迟性不高,还要包括CPU、内存、磁盘、网络配置和使用情况。

    (3)软件环境

    软件环境主要从运行架构、技术体系、数据库、应用服务器、操作系统进行分析。笔者寻找出.class和.jar的后缀文件,可知采用的Java语言开发,同时启动命令和Main文件反编译。接着从WEB-INF/conf文件夹下的配置文件和WEB-INF/lib下的jar文件进一步分析,在配置文件中找出数据库配置文件和jar文件解压后的文件结构。

    综合分析可知采用了B/S运行架构、J2EE技术体系开发[2]、Postgresql数据库、CentOS操作系统。

    (4)系统数据

    系统存储的数据一般有2大类数据。一为结构化,使用数据库方式存储业务信息数据。二为系统业务信息所附带非结构化的附件数据,主要包括合同管理、制度管理、HSE管理等非结构化文件数据。其中,可进入数据库查看相关表并初步分析其关系,详细关系还需从源代码进行分析。

    (5)软件操作和业务熟悉

    软件操作主要是了解到系统目前主要功能,发现与业务的对应关系。笔者的系统为一套整体开发的业务应用系统,合同、新闻、资金、HSE、投资计划等作为子系统涵盖在经营管理系统中。

    最后,业务熟悉是在对软件操作及前面提及的问题熟悉基础上,再与用户进行系统使用感受和业务需求的调研分析,主要包括系统使用中遇到的问题和需提升的地方,以及系统用户量和各下属单位是否有自己独立的需求。

    2      逻辑实现关系和反编译工具

    2.1   逻辑实现关系

    J2EE是Java企业版,它的核心是一组技术规范与指南,提供基于组件的方式来设计、开发、组装和部署企业应用。此种架构的系统代码实现关系[3]如下:web页面(JSP+HTML)到Action到Service到DAO接口到DAO IMPL实现到数据库,其中model对应数据库表的实体类,暂时存储数据方便持久化,在server中往往会获取相应数据。正如“Action服务生,点什么菜,菜上给几号桌,都是它的任务;Service厨师,action送来的菜单上的菜全是它做的;Dao小工和原材料(数据库)打交道事情全是它管。”

    2.2   反编译工具[4]

    反编译是一个对可执行文件进行逆向分析,从而得到源代码的过程。Java这样运行在虚拟机上的编程语言,比较容易进行反编译。目前Java比较成熟的反编译工具:(1)JD;(2)procyon-decompiler;(3)luyten;(4)Jadx。这些都会遇到反编译错误的现象,需结合使用。Java多数直接放class文件或者打包在jar里面,此系统是直接打包在jar中,笔者使用的JD工具,先使用JD-GUI进行大批class文件反编译,JD-GUI能从jar中生成相应的文件夹结构,之后使用JD-Eclipse进行辅助,最终在Eclipse中构建出项目结构。

    3      开发环境部署

    3.1   安装数据库

    此系统使用的PostgreSQL数据库[5],为开源的对象关系数据库。笔者本机为Mac操作系统,使用homebrew来安装。(1)安装:brew install postgresql ;(2)启动:pg_ctl start;(3)创建postgres用户:
    create user postgres with password "XXXXXX";(4)安装pgAdmin:直接从官网下载安装,pgAdmin是PostgreSQL数据库的界面管理工具 ,创建数据库使用其进行;(5)服务器备份数据库:pg_dump -U postgres -F t -f /数据库.tar 数据库;(6)本机恢复数据库:pg_restore -U postgres -d 数据库 /数据库.tar。

    3.2   构建工程目录

    通过Eclipse建立java project。在src目录中存放反编译的java源文件,主要包含各子系统action、model、server、dao各种类、接口等文件;Reference Libraries目录存放工程里面引入的Jar包;JRE System Library目录表示引入Java版本的运行环境;data目录存放附件数据;www目录是视图和项目配置的核心,存放各子系統的jsp、html等视图文件,其中在WEB-INF目录建立着conf、xml等配置文件,以及编译后的classes文件。这样工程目录的设计清楚,各子系统的功能区明确,使用此框架进行开发时,可以根据自己负责的功能对其进行扩展和完善,即可高效开发。

    3.3   启动应用

    在Eclipse中可配置Java Application 使用Main类运行系统,成功启动应用信息在浏览器中输入:0.0.0.0:8888进行访问,访问结果出现登录页面表示应用成功通过浏览器被用户访问。

    4      实用案例

    在已搭建好的开发环境中,通过对资金管理子系统中对外支付功能的删除功能改造为作废功能做一个简介,说明下主要升级改造思路:(1)启动应用;(2)打开对外支付功能网页;(3)用sublime全文搜索定位:启动应用之后,打开对外支付页面,分析作废功能可以沿用的页面,如对外支付申请录入,复制“对外支付申请录入”字样,通过sublime选择查找在文件查找进行全文搜索来快速定位源码位置;(4)打开定位文件并编写目录文件:在定位的源码位置处添加代码;(5)编写js和html视图文件:通过视图文件引用action代码;(6)编写action源码文件;(7)编写model源码文件;(8)编写server源码文件;(9)编写dao和dao impl源码文件;(10)重新编译运行;(11)发布至生产环境:在本机开发测试成功后,需要把编译过的class文件使用jar uvf命令重新打包成jar文件替换到生产服务器中jar文件,同时替换修改的视图文件并重新运行服务。

    5      结    语

    文章阐述了已建系统但源码不能运行,亟需改造升级相关功能并解决bug来保障系统业务的正常运行,通过相关分析技术思路、方法和工具的配套使用,成功复原了基于J2EE的某公司遗留系统源码和开发环境并实现新功能开发的相关过程。实际的项目中时常会发生对待遗留系统的问题,那么笔者希望通过此实际项目的解决之道,不光能为Java方面的项目提供参考,也能为解决相类似问题提供一个可借鉴的新方法,对软件公司和开发人员具有一定的实用价值。

    主要参考文献

    [1]Chris Birchall.遗留系统重建实战[M].张喻,张耀丹,禚娴静,译.北京:人民邮电出版社,2017.

    [2]黑马程序员.Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)[M].北京:人民邮电出版社,2017.

    [3]李兴华. Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)[M].北京:清华大学出版社,2010.

    [4]赵荣彩.反编译技术与软件逆向分析[M].北京:国防工业出版社,2010.

    [5]Regina Obe, Leo Hsu.PostgreSQL即学即用[M].丁奇鹏,译.北京:人民邮电出版社,2010.

    相关热词搜索: 管理系统 遗留 某公司

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网