2013年5月20日

IntelliJ配置tomcat遇到的一些问题

IntelliJ是个很优秀的IDE,对Clojure的支持相当不错,Theme也很喜欢。

最近想把Java的开发环境也从Eclipse切换到IntelliJ,经过一番尝试,觉得它对tomcat的集成跟Eclipse比起来还是有很大差距的,目前还不适合开发基于Tomcat的Web工程(当然也有可能是我没找到正确的方法)。

先来看一下在Eclipse中配置Tomcat,一般有两种方式:

  1. com.sysdeo.eclipse.tomcat
    这是个插件,需要自己安装,目前版本是3.2.1,感觉用了好多年了,配置简单,非常好用。
    优点是对非静态方法里的代码的修改直接生效,不需要反复重启。
    缺点是不能运行多个tomcat实例(貌似只能指定一个CATALINA_BASE)。
  2. Eclipse自带的Server面板
    相当于为每个Server都配置了单独的CATALINA_BASE,因此可以同时启动多个tomcat实例。但是要额外的执行一些deploy步骤,没有插件方便。
    如果要同时调试多个工程,就只能用这种方式了。

现在来看一下IntelliJ的不足:

  1. 不能配置ajp
    本地的环境都是apache通过ajp连tomcat的,但是IntelliJ的tomcat的配置里居然不可以指定ajp端口,每次启动都是随机端口,这是最不能让人接受的。
    除非在启动参数里指定CATALINA_BASE,才会加载对应的server.xml。以这种方式启动的话是不支持热部署的(貌似可以使用JRebel,不过需要license),并且这样也无法运行多个tomcat实例。

  2. tomcat无法停止
    默认使用cataline.bat的stop来停止tomcat,但对很多工程其实是无法成功的。

目前IntelliJ的版本是12.1,希望以后的版本至少能支持ajp配置。