• 在工作中遇到的问题


    欢迎和大家交流技术相关问题:
    邮箱: jiangxinnju@163.com
    博客园地址: http://www.cnblogs.com/jiangxinnju
    GitHub地址: https://github.com/jiangxincode
    知乎地址: https://www.zhihu.com/people/jiangxinnju

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

    • 在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等二进制文件。
  • 相关阅读:
    掌握MySQL 2
    掌握MySQL 1
    掌握并发编程3
    网络编程—SOCKET开发
    掌握并发编程2
    掌握并发编程1
    网络编程知识点
    osi五层协议
    C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
    C#中Convert和parse的区别
  • 原文地址:https://www.cnblogs.com/jiangxinnju/p/6012218.html
Copyright © 2020-2023  润新知