在工作中遇到的问题

最近我经常要更改应用中的一些功能,其实要做的事情比较简单,但是也很繁琐,这里记录一下。由于只是实现一些小的功能接口,不会更改网站的显示内容,所以不能或者很难通过网页直接查看,所以我一般是按照下面的步骤进行处理。

  • 在Eclipse中完成基本的代码编写,比如完成所需的接口函数。
  • 在powershell窗口中利用maven对刚刚修改的代码内容进行打包。(不是打包整个工程,只是其中一个自工程)
  • 利用sftp程序(比如Xmanager中的Xftp)将打出jar包上传到服务器中的对应目录,替换掉原来的jar包。
  • 重启tomcat服务器。
  • 修改测试jsp页面。(由于符合restful,所以可以通过jsp直接出发新编写的函数)
  • 利用sftp程序,将上传的jsp文件上传到服务其中的对应目录。
  • 开启Eclipse远程Debug。
  • 在浏览器中登陆需要测试的网站,运行jsp文件,通过数据库进行查看,验证所实现的功能是否正确。如果不正确返回上面的某个步骤继续。

针对上面的内容再补充几点:

  • 由于利用jsp页面触发所实现的功能,有可能会更改数据库中的内容,在已有的Web框架下,应该能够使Web应用中的数据得到同步刷新,但是不排除意外可能。
  • 由于某些原因,可能需要手动修改数据库内容,也就是说不是通过页面操作,这是为了保证Web应用的数据与数据库保持一致,需要重启应用(tomcat),更新数据内容。
  • 在手动修改数据库时,比如利用Oracle SQL Developer和PL/SQL Developer等客户端对数据库进行操作,一定要保证本地运行的SQL脚本已经commit,否者这些客户端会持有对数据库的写锁,使Web应用无法对数据库进行写操作。
  • 在上述编码、测试环境中经常需要用Eclipse对远程服务器中的tomcat进行调试,所以一定要注意保持Eclipse中的源码和远程服务器中的jar包保持一致,否则会出现许多问题。
  • 我们一般都只对Web应用中很小的一部分进行修改,所以我们都是将某个子工程的jar包上传服务器进行替换,但是需要注意该jar包是否能和服务器中其它的内容相一致,因为很可能于此同时,其他同时已经更改了其它jar包,导致了不一致,出现难以调试的困难。为了保证一致,有两个方法:一是将本地所有的jar包上传服务器进行替换,但是我们一般不推荐这样做。另一种方法是进行减小jar包的替换范围,我们可以讲远程服务器中我们需要修改的jar包下载到本地,然后只替换其中若干个我们需要修改的class文件。
    • 从服务器拉出jar包
    • jd-jui反编译代码之后关闭jd-jui。使用反编译的代码替换eclipse中的对应代码。
    • mvn clean package -DskipTest
    • 再次从服务器拉出jar包
    • 用7-zip替换jar包中对应class文件
    • 上传到服务器
  • 在有些情况下可以直接使用restclient发送消息报文进行测试,不有自己编写jsp页面。
  • 有一次我在重启tomcat时,发现shutdown命令无法正常关闭tomcat,所以之后利用startup启动时也会出现问题,经过很长时间的排查,发现是在前一次启动tomcat时是用的root身份,所以之后在普通用户权限下无法进行关闭。解决办法比较简单,就是重新切回root身份进行关闭,然后退到普通权限重新启动。另一个关于权限的问题是在用sftp上传文件时一定注意所使用的身份,非特殊情况一般不要使用root权限上传,否则会导致文件(比如jar文件)的读写权限太严,tomcat无法正常读取。
  • 在Linux服务器中的文件对比工具都不是很顺手,命令行对比虽然还不错,但是文件路径都很深,每次只是输入路径就麻烦死了,我一般是将需要对比的文件、文件夹利用Xftp下载到本地,然后使用beyond compare进行对比,由于Xftp和beyond compare这两个工具都有路径历史记录,省去了每次输入路径的麻烦。
  • 在修改代码中经常会使用文件内容搜索功能,Eclipse的搜索限制太多,比如只能搜索java等文本文件,所以我一般都是使用filelocator进行搜索,功能更加强大,可以搜素word,pdf等二进制文件。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android知识点总结

SpringBoot-03-之热部署

14040
来自专栏余生开发

vue - .babelrc

        // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es7,es8进行转码,并且设置amd,comm...

13820
来自专栏从零开始学自动化测试

pytest文档26-conftest.py作用范围

一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用。 在不同的测试子目录也可以放conftest....

99340
来自专栏mwangblog

开始使用GitHub

13420
来自专栏北京马哥教育

原创投稿 | 如何实现nagios发送通知邮件

前言 上一篇已经介绍了nagios如何实现对主机及服务的监控,尽可能实现对系统运行状态的全面监控只是初级目标,nagios还可以借助smtp服务发送通知信息给指...

50060
来自专栏linux系统运维

Linux监控平台介绍,zabbix监控介绍,安装zabbix,忘记Admin密码如何做

21940
来自专栏小白安全

巧用netsh命令实现端口转发(端口映射)

巧用netsh命令实现端口转发(端口映射)  好处:即时生效,随意修改删除,不影响其他ip映射  记事本保存为bat格式批量添加后,并查看映射:  nets...

62460
来自专栏python百例

120-打造vim为python IDE

pycharm之类的IDE很好,但是不能在无图形的终端下使用,另外它们是“重量级选手”。如果偶尔需要vim编辑python程序,能让vim支持python的语法...

21240
来自专栏安恒信息

【高危】漏洞预警 | Linux Systemd存在高危远程溢出漏洞(CVE-2017-9445)

systemd是Linux下的init软件,主要用于减少系统引导时间和计算开销。 systemd 的systemd-resolved服务用于处理DNS请求并为本...

33370
来自专栏运维前线

Gitlab安装使用及汉化配置

一、GitLab简介 GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且将项目设...

2K60

扫码关注云+社区

领取腾讯云代金券