【问题标题】:Undertow Standalone JARUndertow 独立 JAR
【发布时间】:2018-02-07 05:12:17
【问题描述】:

我正在尝试组装一个独立版本的 Undertow,但我遇到了 JAR 依赖地狱。我终于到达了以下 JAR 列表,但我真正想要的是 Undertow 的独立包,其中包含所有依赖项,尽管它声称是“轻量级”和“可嵌入”,但我似乎无法在任何地方找到它“Undertow 可以嵌入到应用程序中,也可以通过几行代码独立运行。”但是,在包含依赖项之后,真正的权重似乎是很多代码(大约 6 MiB)。这甚至不包括一些明显或记录在案的可选包,如 JBoss 模块和 OSGI 等。

撇开大小不谈,我在类路径上使用列出的 JAR 的所有东西都可以使用,但是相同 JAR 的捆绑包不起作用;我在尝试启动服务器时遇到错误:XNIO001001: No XNIO provider found。

谁能指出我忽略的东西?还是我只是对什么是“轻量级”和“可嵌入”有一个老式的定义?

JAR 被捆绑:

  • alpn-api-1.1.3.v20160715.jar
  • jboss-logging-3.3.1.Final.jar
  • jboss-logmanager-2.0.9.Final.jar
  • jboss-logging-annotations-2.1.0.Final.jar
  • jboss-threads-2.3.0.Final.jar
  • undertow-core-2.0.0.Beta1.jar
  • wildfly-client-config-1.0.0.Final.jar
  • wildfly-common-1.3.0.Final.jar
  • xnio-api-3.6.0.Final.jar
  • xnio-nio-3.6.0.Final.jar

【问题讨论】:

  • jboss-logging-annotations-2.1.0.Final.jar 仅在编译时使用,因此不需要。 jboss-logmanager-2.0.9.Final.jar 也应该是可选的。 JBoss Logging 应该适用于任何日志管理器。 alpn-api-1.1.3.v20160715.jar 可能只需要 HTTP/2。
  • @James:是的,我就是这么想的,但是如果 ProGuard 不能解析所有引用的类,它就会出错。但我会尝试更多的放弃那些。 WRT 日志记录,我一点也不想要;它嵌入的系统只记录到控制台,我想要一个简单的记录器来做到这一点。可能要写一个。
  • jboss-logging 只是一个外观,所以它会写入任何日志管理器。我猜 ProGuard 必须检查源?这是我需要 jboss-logging-annotations 的唯一原因。注释甚至在运行时都不可用。
  • @James,实际上 PG 使用 JAR 中的二进制文件,而不是源代码。注释必须存在于类中才能知道它们。
  • XNIO JAR 中存在注释。

标签: java jboss undertow


【解决方案1】:

上面的 JAR 列表似乎确实有效,但我必须配置 ProGuard 以保留其中的 META-INF/services 文件夹,同时删除其他元信息,如下所示:

# Combining JARs Only
-dontobfuscate
-dontshrink

-injars <DISTRO>/WebServer.internal.jar(!**/Z*)
-injars <DISTRO>/../lib/alpn-api-1.1.3.v20160715.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/jboss-logging-3.3.1.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/jboss-logging-annotations-2.1.0.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/jboss-logmanager-2.0.9.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/jboss-threads-2.3.0.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/undertow-core-1.4.22.Final.jar(META-INF/services/**,!META-INF/**,**)
-injars <DISTRO>/../lib/wildfly-client-config-1.0.0.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/wildfly-common-1.3.0.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/xnio-api-3.6.0.Final.jar(META-INF/services/**,!META-INF/**)
-injars <DISTRO>/../lib/xnio-nio-3.6.0.Final.jar(META-INF/services/**,!META-INF/**)

-outjars <DISTRO>/WebServer.jar

对于“轻量级”网络服务器来说,我仍然觉得太过分了。

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2015-09-01
    • 2011-07-10
    • 2014-01-23
    • 1970-01-01
    • 2022-08-04
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多