Java Web开发通过IDE外启动Tomcat进行多项目同时调试
市面上Java Web容器很多,比如:Tomcat、Jetty、WebLogic、Websphere、JBoss等等。WebLogic、Websphere、JBoss这些都是比较大型的Web容器,一些大型企业特别是对安全性、稳定性要求比较高的,在生产环境都会采用这些Web容器。而Tomcat、Jetty属于轻量级Web容器,大多用于开发调试场景中,Tomcat更是Java Web开发中最常用的Web容器了。
相信大部分Java开发人员使用的是Eclipse开发工具,因为国内中大部分培训机构使用Eclipse开发工具进行教学,所以大多数人习惯了这款开发工具不愿意更换别的开发工具。作者也用了一两年的Eclipse开发工具,在Eclipse开发工具中启动Tomcat开发调试都很方便,唯一不足的就是内存占用太大,电脑配置低经常卡死。后来接触了Netbeans这款开发工具,觉得Netbeans开发工具很不错,特别是对Maven项目的支持上。后面也有试过一段时间的IntelliJ IDEA,这个开发工具也很不错,但不方便在同一窗口打开多个项目,所以没再继续使用。
随着云计算技术的快速发展,Tomcat容器被广泛应用到了生产环境中。相对于大型Web容器来说Tomcat容器使用方便,学习成本低。现在大部分企业都有自己的一套用户系统,用户通过SSO登录系统后可以在该企业的各个业务系统中畅通自如。而作为开发人员也难免同时维护多个Web系统,如果是基于cookie的统一登录认证,多个系统就需要开发环境配置多个域名。这里介绍一下开发环境如何配置Tomcat多域名,以满足本地多Web应用同时开发的需求。
首先打开hosts文件配置各个系统域名,若hosts文件无法保存,注意修改下文件权限,各系统域名需要跟SSO系统同个域(即相同的顶级域名,正常情况下一个企业多个内部系统不存在跨域)。hosts文件位置及测试系统域名配置如下图:
然后找到Tomcat的server.xml配置多域名,并将appBase指定到项目的输出目录,这样不需要从IDE中启动Tomcat就能够实时展示jsp及其他资源文件的改动。具体配置如下图所示:
Tomcat按照上图的的配置可以直接外部启动,就能够通过域名同时访问这些配置好的Web应用。如果项目打的war包不是ROOT访问时需要加上上下文路径,如果直接打成ROOT.war就方便很多,用域名直接访问就行。到这估计不少同学要问了,外部启动Tomcat调试方便吗?
下面来介绍下如何通过Netbeans连接外部Tomcat进行断点调试,即远程调试。首先需要设置Tomcat以debug模式启动,这个设置网上一查一大堆,大部分都说在catalina.bat中加一行命令设置JPDA_OPTS。其实有个最简单的方法,就是在startup.bat中加jpda就行了。看图:
Tomcat默认debug端口是8000,要修改端口可以到catalina.bat中修改。注意:如果非本机调试要把localhost:这个删除,仅保留端口号,不然远程调试工具连接不上此Tomcat。如图:
设置好之后启动时第一行会显示监听端口信息。如下图所示:
在Netbeans中找到调试按钮点击旁边小三角按钮,在弹出菜单中点击连接调试器,弹出连接信息填写窗口,填好信息连接调试即可。连接上之后如果Netbeans中已经打开了前面提到的项目,这些项目可以同时调试,方便很多。至于eclipse和IntelliJ IDEA开发工具,肯定也支持远程调试,具体方法请自行查找。具体如下图: