我为拥有数百万行Java代码库的企业工作。不幸的是,当一个java EAR在另一个系统上调用另一个EAR时,存在非常糟糕的实践来跟踪。问题变得更糟,我们运行DB2并且所有DB2模式都在相同的数据连接上运行。这意味着没有标准的方法来查看配置文件或数据库连接,甚至告诉应用程序访问哪些数据库。这个问题扩展到其他REST服务,因为我们有REST数据服务,MQ系统,JMS,EJB RMI等。尝试进行影响分析是一场噩梦。
是否存在一个工具,可能是一个findbugs插件,我可以在应用程序上运行并让它生成应用程序访问的系统的报告?
如果没有,如果我在java.io和java.nio上说TRACE来记录所有内容,是否应该捕获Java试图通过应用服务器进行的任何网络连接?
我的最终目标,如果我找不到可以帮助解决这些问题的静态分析系统,我想编写一些AOP应用程序,它将存在于EAR和WebSphere之间,并记录所有出站和可能的入站连接到EAR资源。
这可能吗?
答案 0 :(得分:1)
棘手的一个; - )
Findbugs可以帮助您识别java代码中与通信相关的所有位置。但你必须为此做一些事情:
识别要标记的所有类型的连接(例如,数据库连接,EJB通信,ReST客户端代码......)
如果你有,你需要编写自己的findbugs插件来检测那些地方。可能听起来很复杂,但取决于你想要识别一个精通开发人员的地方可以在2-3天内做到这一点我猜。作为起点,我们来看看findbugs中可用的bug模式的源代码,找一个类似的,并以此为出发点。网上还有很多关于如何编写自己的错误模式的教程......
将findbugs配置为仅使用您的错误模式并在您的代码库上运行它(否则所有其他错误都会使结果混乱,尤其是如果您的代码库非常庞大)。
Findbugs会生成一份报告/向您展示所有“沟通”地点......