分类: 网络与安全
2011-08-23 16:13:06
问题:tomcat使用startup.bat启动时,可以使用JMX方式监控(通过jdk6/bin/jconsole.exe连接测试),同时查看tomcat6的网络连接时(使用了360的网络连接查看器-_-),也会有配置的JMX的监听端口(我们这里配置的1090)。但是把tomcat做成NT服务之后,就无法使用jconsole连接,同时在网络连接里也看不到1090监听端口
原因:最根本的原因是startup.bat会去调用catalina.bat,而catalina.bat中配置了JMX的相关参数。但是注册成系统服务时就不会去调用catalina.bat。
解决:根据原因,解决方法就是在注册服务时加上相应的参数。想到了两条路径,修改tomcat/bin/service.bat,在里面添加参数。另一个方法是直接修改注册后的服务的参数。
第一种方法,看了看service.bat,没仔细研究,也没去尝试。
第二种方法,打开服务的属性页面,理论上应该是在可执行文件路径后面加一些参数(从mysql的参数推断来看,不知道是不是如此),但是此项是无法编辑的(图1)。
google的结果是先看到了一篇通过修改注册表的方法来修改参数的方法,在[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\ITSM\Parameters\Java]下修改Options参数,添加如下内容(图2):
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
修改后测试发现可以连接,但是修改注册表毕竟不方便(当然可以写成.reg文件直接让工程师去执行)。再查一下修改tomcat参数的文章,说到可以利用tomcat6w.exe来修改参数。
在tomcat/bin下面有tomcat6.exe和tomcat6w.exe,其中tomcat6.exe自然是服务运行时必须的文件。曾经用过jbuilder且使用jbuilder的原理来把jar包生成exe,所以对这个带w的exe,第一印象就是对应的窗口化的程序。双击tomcat6w.exe执行,提示找不到服务tomcat6。
我理解tomcat默认会把服务注册为tomcat6,而我们使用了service install ITSM,注册后的服务是ITSM,于是鬼使神差的就把tomcat6w.exe复制了一份改名为ITSM,双击执行,打开了ITSM服务的配置界面(图3)。界面里的Java选项卡中发现java options中已经有了JMX相关的参数。此时才意识到原来这里的设置就是对应的注册表中设置的那些参数。
至此,对于tomcat的参数设置终于明了,也意识到在catalina里面配置的增大jvm内存的参数,在注册为服务后,其实也没起作用。
后来又测试了一下,删除tomcat6w.exe对服务并没有影响,它只是个纯粹的图形化的配置界面。当然tomcat6.exe是不能删的,删了服务肯定就无法启动了。
(图1)
(图2)
(图3)