首页 > 解决方案 > 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 登录之间有什么区别在)。

标签: javadebianjettyosgi

解决方案


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 映像供您使用。


推荐阅读