从 ubuntu 中的 jar 文件启动 tomcat
Posted
技术标签:
【中文标题】从 ubuntu 中的 jar 文件启动 tomcat【英文标题】:starting tomcat from jar file in ubuntu 【发布时间】:2012-07-22 13:10:29 【问题描述】:我是第一次使用 tomcat。我已经下载并解压了tomcat 7.0.28。我可以通过 ./startup.sh 和 ./shutdown.sh 从命令提示符启动和关闭它。到目前为止,它工作正常。我也可以在浏览器中看到 tomcat 主页和示例。
但我想要的是使用 java profiler 来分析 tomcat 服务器。 为此,我想从 jar 文件中运行它。像 java -jar tomcat_allrequiredclasses.jar 之类的东西。 有什么办法可以像这样启动 tomcat 服务器吗?我试图运行位于 bin 目录中的 tomcat 的 jar 文件,但给了我 classNotdefined 异常(只是为了尝试这样做)。
谢谢你..
【问题讨论】:
在 JDK 中附加 JVisualVM。这允许您在没有特殊调用 voodoo 的情况下分析正在运行的程序。 【参考方案1】:Tomcat 需要在 JVM 启动时设置很多系统属性和类似的东西,因此脚本是必需的,除非您打算使用“嵌入式 Tomcat”并使用 Tomcat's embedded driver 编写自己的启动驱动程序。
我认为仅仅附加一个分析器就有点过头了。大多数分析器都带有一个 JVM “代理”,您可以使用 -agentpath
命令行选项将其配置为在 JVM 启动时附加。这就是我附加 YourKit Java Profiler 的方式,例如:
CATALINA_OPTS="-agentpath:/path/to/yourkit/libyjpagent.so=$yourkit.options"
$CATALINA_HOME/bin/startup.sh
这将以通常的方式启动 Tomcat,但包含 JVM 分析器代理,以便您之后可以附加到它。
更新以包含 OP 的示例
你想这样做:
$ export CATALINA_OPTS="-javaagent:lib/jborat-agent.jar -Xss256m -Xms256m \ -Dch.usi.dag.jborat.exclusionList="conf/exclusion.lst" \ -Dch.usi.dag.jp2.dumpers="ch.usi.dag.jp2.dump.xml.XmlDumper" \ -Xbootclasspath/p:./lib/Thread_JP2.jar:lib/jborat-runtime.jar:lib/jp2-runtime.jar"
$ $CATALINA_HOME/bin/startup.sh
我鼓励您尽可能使用完整路径(例如,不要使用 lib/jborat-agent.jar
-- 添加完整路径)。
注意,通过使用-Xss256M
,您将线程堆栈大小设置为256M,而不是堆大小。我怀疑您打算使用-Xmx256M
来设置堆的最大大小。
【讨论】:
您好克里斯托弗,感谢您的回复。你是对的,我的 java profiler 还包含 JVM 代理。我正在通过脚本文件说 run.sh 运行我的探查器。看起来像: java -Xss256m -Xms256m -javaagent:lib/jborat-agent.jar \ -Dch.usi.dag.jborat.exclusionList="conf/exclusion.lst" \ -Dch.usi.dag.jp2.dumpers= “ch.usi.dag.jp2.dump.xml.XmlDumper”\ -Xbootclasspath/p:./lib/Thread_JP2.jar:lib/jborat-runtime.jar:lib/jp2-runtime.jar $* 所以如果我想要用这个运行tomcat,你能告诉我我应该在我的run.sh中包含什么吗? 您应该停止使用您自己的run.sh
,而是使用包含您的export CATALINA_OPTS=...
行的bin/setenv.sh
(您可能必须创建它)。然后,只需启动bin/startup.sh
,您的系统属性就会添加到 JVM 启动命令中。您的run.sh
脚本确实没有理由存在。以上是关于从 ubuntu 中的 jar 文件启动 tomcat的主要内容,如果未能解决你的问题,请参考以下文章
从命令行启动应用程序时,如何将 Spring Boot 应用程序 jar 中的文件作为 -D 属性值引用?