java - 为什么 vm JAVA_OPTIONS 在码头不起作用
问题描述
我不熟悉 shell,也许这让我很困惑,但我不知道是什么导致了这个问题。在使用 jetty 8.1.13 容器开发 Web 程序时,我在 start.ini 文件中添加了一些参数(参考来自https://www.eclipse.org/jetty/documentation/current/enable-remote-debugging.html)
--exec
-Xdebug
-agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n
在 jetty.sh 文件中,我添加了一些 -D vm 选项,例如
JAVA_OPTIONS="-Dargs=switch"
export JAVA_OPTIONS
然后我启动码头
bin/jetty.sh start
然后shell创建两个进程,通过命令
ps aux | grep jetty
我们找到了这两个过程,比如
lawrence 26180 0.0 12.3 8900580 1034116 s000 S 11:03下午 1:13.71 /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/bin/java -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n -Xmx2000m -Xmn512m -Djetty.home=/Users/lawrence/tools/jetty-dist-8.1.13 -cp /Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-xml-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/servlet-api-3.0.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-http-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-continuation-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-server-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-security-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-servlet-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-webapp-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-deploy-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-servlets-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-annotations-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/annotations/javax.annotation-1.1.0.v201108011116.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/annotations/org.objectweb.asm-3.1.0.v200803061910.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-jmx-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/com.sun.el-2.2.0.v201108011116.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/javax.el-2.2.0.v201108011116.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/org.apache.jasper.glassfish-2.2.2.v201112011158.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jsp/org.eclipse.jdt.core-3.7.1.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-jndi-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-plus-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jndi/javax.activation-1.1.0.v201105071233.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar:/Users/lawrence/tools/jetty-dist-8.1.13/resources:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-websocket-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-util-8.1.13.v20130916.jar:/Users/lawrence/tools/jetty-dist-8.1.13/lib/jetty-io-8.1.13.v20130916.jar org.eclipse.jetty.xml.XmlConfiguration /var/folders/tl/dy87zyw579ggfx32tlv8tn3r0000gn/T/start8991351085930913981.properties /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-annotations.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-deploy.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-webapps.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-contexts.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-testrealm.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-logging.xml /Users/lawrence/tools/jetty-dist-8.1.13/etc/jetty-started.xml
lawrence 26177 0.0 0.2 7864928 19696 s000 S 11:03下午 0:01.30 /usr/bin/java -Dargs=switch -Djetty.state=/Users/lawrence/tools/jetty-dist-8.1.13/jetty.state -Djetty.home=/Users/lawrence/tools/jetty-dist-8.1.13 -Djava.io.tmpdir=/var/folders/tl/dy87zyw579ggfx32tlv8tn3r0000gn/T/ -jar /Users/lawrence/tools/jetty-dist-8.1.13/start.jar etc/jetty-logging.xml etc/jetty-started.xml
args=switch jvm 选项应该在主进程 26177 中按预期读取,但遗憾的是它没有。
那么,当我们使用 --exec 参数来 fork() 一个新的子进程时,这个命令实际上做了什么,为什么这个 shell 不能读取 -D jvm 选项,甚至是命令行中的 -D jvm 选项?有人请帮忙解决这个问题吗?非常感谢。
解决方案
如果您在 java 命令行上使用了 -Dkey=value 名称(在主类之前),那么这些名称将不会被转发到分叉的 JVM。但是,如果您在主类之后或在 ${jetty.base}/start.ini 文件中使用 -Dkey=value,那么这些系统属性将转发到分叉的 JVM。
推荐阅读
- javascript - 在 iframe 中使用 JavaScript 删除 Cookie
- java - 如何在 Fuel Http 客户端中使用摘要认证?
- python - 如何使用 python-selenium 获取网页上视频的总时间和当前时间
- docker-compose - 如何使用 docker-compose 清除图像缓存
- mysql - 如何在MYSQL中使用sum过滤窗口函数?
- sql-server - SSIS 将 ADO Net 源聚合到 SQL Server 数据库中
- java - Java 8 DateTimeFormatter 的符号“F”
- javascript - Vue 3 Reusefull 代码如何在自定义组件中显示特定错误
- bash - 如何解析调制解调器编号、标识符和名称的 nmcli 输出?
- vb.net - 在同一页面但在打印文档 vb.net 的下一列中显示多余的数据