Tomcat服务:在wrapper.conf中引用

时间:2009-03-05 03:48:19

标签: java tomcat windows-services

我想从Eclipse设置远程调试。 Tomcat在Windows上作为服务运行。

这一点很好,一个快速谷歌指向我正确的设置添加到wrapper.conf启用此功能。 wrapper.conf中已有条目,因此我复制/粘贴了最后一个条目并进行了修改:

wrapper.java.additional.8="-Djava.endorsed.dirs=C:/Program Files/OurApp/tomcat/common/endorsed"
wrapper.java.additional.8.stripquotes=TRUE
wrapper.java.additional.9="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n"
wrapper.java.additional.9.stripquotes=TRUE

它不起作用,因为引号围绕着所有内容,而stripquotes仅适用于linux系统。

理论上,正确的条目应该是:

wrapper.java.additional.8=-Djava.endorsed.dirs="C:/Program Files/OurApp/tomcat/common/endorsed"
wrapper.java.additional.8.stripquotes=TRUE
wrapper.java.additional.9=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n

第二个例子不需要引号 - 没有空格来分解它。 第一个例子是 - 因为“程序文件” 我在这次评估中是否正确?

如果是这样,应用程序如何/为何如此工作?表面上有几个参数设置如此(嵌套在qutoes中),我认为实际上没有效果 例如最小/最大内存设置。

我发现了一个示例here,它具有相同的功能,表面上是Windows和Linux的配置。

我的问题: 这些引号会阻止配置命令通过吗?
如果是这样的话,为什么应用程序会起作用?

3 个答案:

答案 0 :(得分:3)

在更多地玩游戏并拖拽调试日志之后,我想我已经解决了这个问题。 问题是混合的 1 - 懒惰并将两个配置项放在同一行上。 (在我的辩护中,我将其复制为the Tomcat FAQ中的一行 2 - 使用引号

这两者的结合导致了这个问题。

wrapper.java.additional.9="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n"
wrapper.java.additional.9.stripquotes=TRUE

像这样生成一个命令行:

java "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n" ...

它将整个字符串视为一个参数 - 而不是我想要的那两个。

没有引号     wrapper.java.additional.9 = -Xdebug -Xrunjdwp:transport = dt_socket,server = y,address = 9135,suspend = n     wrapper.java.additional.9.stripquotes = TRUE 它会生成:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n ...

看到没有引号搞砸了,它会像我希望的那样处理两个-X参数。 甚至更好(也可能是预期用途)作为两个单独的条目

    wrapper.java.additional.9="-Xdebug" 
    wrapper.java.additional.9.stripquotes=TRUE
    wrapper.java.additional.10="-Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n"
    wrapper.java.additional.10.stripquotes=TRUE

java "-Xdebug" "-Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n" ...

每个都有引号,它会单独处理它们。 现有条目都很好,因为它们每行只设置一个项目。

所以我只是把它归结为一种学习经历(叹息),并意识到我现在对以前不知道的wrapper.conf了解了很多。

干杯, evnafets

答案 1 :(得分:1)

我通过* .bat文件在Eclipse中使用远程调试。可能对你来说更简单。

要完成的步骤:

  1. 在zip文件中下载tomcat安装并将所有文件复制到bin文件夹
  2. 使用

    等内容创建debug.bat文件

    设置JPDA_ADDRESS = 8000

    设置JPDA_TRANSPORT = dt_socket

    致电catalina.bat jpda start

  3. 如果您输入的端口已经出现错误,请将8000更改为其他任何端口(8001,8002等)。

    从Eclipse方面:

    1. 打开调试对话框
    2. 新的远程Java应用程序(连接选项卡:主机 - 本地主机或任​​何其他IP地址,端口 - 8000;   “源”选项卡:添加所有源文件(例如,删除所有文件,添加Java项目,选择所有项目)
    3. 推送调试
    4. 在Eclipse中设置断点并尝试从Tomcat访问它们

答案 2 :(得分:0)

如果您还在寻找另一种解决方案,我会为tomcat6w.exe拍摄,该对话框应用程序用于配置Windows服务(在tomcats bin目录中可用)。我相信有一些选项可用于设置jvm参数,如你所说。这些选项将转到注册表,配置服务。