java - Jetty 5.1.x 在 10 分钟后或“真正的本地连接”后启动
问题描述
我在一个非常古老的系统上工作:OSGi Framework with Jetty。Java 命令在带有 -DmS 参数的屏幕内启动。
最后,控制台给我这个:
osgi> Sep 14, 2021 9:17:43 AM org.mortbay.http.HttpServer doStart
INFO: Version Jetty/5.1.x
Sep 14, 2021 9:28:32 AM org.mortbay.util.Container start
INFO: Started org.eclipse.equinox.http.jetty.internal.Servlet25Handler@90832e
Sep 14, 2021 9:28:32 AM org.mortbay.util.Container start
INFO: Started HttpContext[/,/]
Sep 14, 2021 9:28:32 AM org.mortbay.util.FileResource <clinit>
INFO: Checking Resource aliases
Sep 14, 2021 9:28:33 AM org.mortbay.http.SocketListener start
INFO: Started SocketListener on 0.0.0.0:[port]
Sep 14, 2021 9:28:33 AM org.mortbay.util.Container start
INFO: Started org.mortbay.http.HttpServer@142bece
Experimental: JNI_OnLoad called.
和 :
ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
1 ACTIVE javax.servlet_2.4.0.v200806031604
2 ACTIVE org.apache.commons.logging_1.1.1.v20080605-1935
3 ACTIVE org.eclipse.equinox.http.jetty_1.1.0.v20080425
4 ACTIVE org.eclipse.equinox.http.servlet_1.0.100.v20080427-0830
5 ACTIVE org.eclipse.osgi.services_3.1.200.v20071203
6 ACTIVE org.mortbay.jetty_5.1.14.v200806031611
7 ACTIVE org.apache.log4j_1.2.13.v200806030600
Fragments=14
8 ACTIVE Jamod_0.0.0
9 ACTIVE org.openscada.opc.dcom_0.5.0
10 ACTIVE Comm Linux RXTX Bundle_0.0.0
11 ACTIVE org.apache.commons.io_1.4.0
12 ACTIVE org.apache.commons.fileupload_1.2.1
13 ACTIVE org.apache.commons.lang3_3.1.0
14 RESOLVED InterpreterLog4JProperties_0.0.0
Master=7
15 ACTIVE EmailManager_1.0.0
16 ACTIVE Interpreter_1.0.0
17 ACTIVE InterpreterServlet_1.0.0
但是在 10 分钟内,我只有这个:
osgi> Sep 14, 2021 10:16:06 AM org.mortbay.http.HttpServer doStart
INFO: Version Jetty/5.1.x
ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
1 ACTIVE javax.servlet_2.4.0.v200806031604
2 ACTIVE org.apache.commons.logging_1.1.1.v20080605-1935
3 STARTING org.eclipse.equinox.http.jetty_1.1.0.v20080425
4 RESOLVED org.eclipse.equinox.http.servlet_1.0.100.v20080427-0830
5 RESOLVED org.eclipse.osgi.services_3.1.200.v20071203
6 RESOLVED org.mortbay.jetty_5.1.14.v200806031611
7 RESOLVED org.apache.log4j_1.2.13.v200806030600
Fragments=14
8 RESOLVED Jamod_0.0.0
9 RESOLVED org.openscada.opc.dcom_0.5.0
10 RESOLVED Comm Linux RXTX Bundle_0.0.0
11 RESOLVED org.apache.commons.io_1.4.0
12 RESOLVED org.apache.commons.fileupload_1.2.1
13 RESOLVED org.apache.commons.lang3_3.1.0
14 RESOLVED InterpreterLog4JProperties_0.0.0
Master=7
15 RESOLVED EmailManager_1.0.0
16 RESOLVED Interpreter_1.0.0
17 RESOLVED InterpreterServlet_1.0.0
我不想修改java代码(太旧,太长),我只想正确启动它......
最后有人注意到,如果我在这台服务器上插入一个屏幕和一个键盘,然后登录,码头会立即启动吗?(而这不适用于 ssh 登录...?)
我认为在我的情况下,最简单的方法(我同意不完美和干净)是模拟“真实登录”(但我不明白“真实/本地”登录和 ssh 登录之间有什么区别在)。
解决方案
Jetty 5.1.14 早在 2009 年就是 EOL(生命终止)- https://www.eclipse.org/jetty/download.php#version-table
在过去的 12 年里,Jetty 上的提交确实超过了 100 万次(我刚刚检查过)
为了成功使用这个旧版本的 Jetty...
- 您必须使用 Java 1.4(仅限)并且没有更新版本来运行它。较新的 JVM 禁用了那个时代的 Jetty 需要运行的各种功能。(您可以勉强使用 Java 1.5,但前提是您禁用了 SSL/TLS,并且不要使用仅支持 Java 1.2 的特定版本的 OSGi)
- 您必须在过去 12 年未升级的操作系统上运行它。较新的操作系统已更新以支持较新 JVM 的功能集,并放弃了对较旧 JVM 的怪癖的支持,并且不会可靠地运行较旧的 JVM。
- 您不得使用 SSL(您现在不可能使用它)。自 2009 年以来,SSL/TLS 发展非常迅速,您在 Java 1.4 JVM 中有一个功能集,现代 Web 浏览器 100% 不支持该功能集。这意味着即使您打开它,您的现代浏览器也具有最低 TLS 1.2 和 Java 1.4 甚至不支持其高端/非导出配置的密码套件。
所以简而言之,您无法升级 Jetty(您的选择),因此您无法升级 JVM(您的首选的结果),并且您无法升级操作系统(如果您希望运行 Java 1.4)以获得成功。
如果你升级了你的 JVM 或你的操作系统,你基本上就搞砸了。我什至找不到具有旧操作系统或 JVM 的 docker 映像供您使用。
推荐阅读
- java - 如何在 Java 中复制此 Python 代码?
- python - Django - 为什么用户没有通过 IsAdminUser,但 django 没有抛出 unauth 异常?
- flutter - 如何在颤动中复制文本以及字体样式?
- javascript - 如何使 JavaScript 类可移植到任何项目
- android-studio - 如何使用改造检索对象内的列表数据
- python-3.x - 运行 for 循环直到任意索引(python 3.x)
- angular - 带有useHash的Angular 8路由:true
- opengl - 如何在 OpenGL 中将渲染与监视器的显示节拍同步?
- python - Python模糊匹配两列字符串
- token - 每天增加 TRC20 代币的总供应量