如何通过 jnlp 提供带有许多 webapps 的码头?

Posted

技术标签:

【中文标题】如何通过 jnlp 提供带有许多 webapps 的码头?【英文标题】:How can I deliver jetty with many webapps via jnlp? 【发布时间】:2011-01-21 23:40:28 【问题描述】:

我有一个在 servlet 容器中使用 jsf 的 webapp (http://sourceforge.net/projects/sf-mvn-plugins/files/m2-repo/net/sf/maven/plugins/example-captaincasa-jnlp/0.1-SNAPSHOT/example-captaincasa-jnlp-0.1-SNAPSHOT.war/download)。这适用于我本地电脑上的 jetty-maven-plugin run-war 目标。将来我想制作更多这种网络应用程序。

我正在寻找一种通过 jnlp 使用码头交付这些 webapps 的方法。最终用户应该是零安装,但 webapps 需要 servlet 容器,而我的主机不支持 servlet 容器或应用程序服务器等。

我不喜欢嵌入式解决方案,因为在这种情况下,每个 web 应用程序都必须使用单独的码头交付,并且必须使用单独的码头运行 -> 尺寸太大 -> 下载大小过多等等。

架构应该与此类似: (来源:sourceforge.net)

示例:Bundle1 可以包含码头并部署 webapp1,而 Bundle2 可以包含码头并部署 webapp1 和 webapp2(与最终用户的要求相关,我希望提供我的 webapps 的许多变体)

但是我的问题是什么?

    需要哪些码头?我想将这些上传到我的主页进行托管。 我应该使用哪个 jar 作为 jetty 作为主 jar 来通过 jnlp 启动他? 我应该使用哪个主类通过 jnlp 启动码头? 我可以使用哪个参数来配置 jetty 说这是 webapp1 的战争,这是 webapp2 的战争......或者这是用于热部署的 weapps 目录......?

对我来说重要的问题是 1。如果回答这个问题以便我可以在本地运行码头(没有 maven 插件)并通过手动运行,也许我可以解决剩下的 2-4。

【问题讨论】:

【参考方案1】:

我今天找到了另一种方法。这也很有趣。这是概念:

    使用 java webstart 安装 osgi 容器 使用 bundle x 或 osgi 服务下载您应用的所有 bundle 使用码头捆绑包提供码头支持

然后安装应用程序

我从这篇文章中得到了这个想法: http://www.toedter.com/blog/?p=45

【讨论】:

【参考方案2】:

为什么不部署一个通过Server 类以编程方式调用Jetty 的普通Java 应用程序(带有main() 等)?该类是通过具有适当上下文、servlet 类等的代码配置的。

我之前已经成功地做到了。唯一令人头疼的是运行一个 Jetty 并根据要求下载多个应用程序(如果我正确阅读了您的问题)。你可以使用一些类加载魔法,并从远程 URL 按需加载类/应用程序吗?

【讨论】:

你好布赖恩,感谢您的回答。我对码头的配置不熟悉。所以目前我正在努力寻找配置。你可以在这里追踪我的测试:sourceforge.net/projects/devtool/files/_experimental/…Thomas

以上是关于如何通过 jnlp 提供带有许多 webapps 的码头?的主要内容,如果未能解决你的问题,请参考以下文章

如何签名JNLP文件?

Jenkins2 学习系列21 -- 通过JNLP协议添加Slave节点

[java] JNLP文件安装

Java千百问_08JDK详解(011)_jnlp文件是什么

如果通过双击 JNLP 文件启动 JAVA Web Start 应用程序,如何允许它访问 macOS Catalina 上的文件系统?

通过 JNLP 传递动态参数