从 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.ja‌​r"
$ $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的主要内容,如果未能解决你的问题,请参考以下文章

从Ubuntu终端运行scala *.jar文件[重复]

从命令行启动应用程序时,如何将 Spring Boot 应用程序 jar 中的文件作为 -D 属性值引用?

ubuntu16.04设置tomcat自启动

如何从 Ubuntu 中的启动终端执行脚本正确启动脚本?

ubuntu下怎么将一个jar文件复制到另一个jar文件中的lib目录中去

Ubuntu执行jar文件[重复]