- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个需要尽可能简单地为最终用户安装的应用程序。虽然最终用户可能是经验丰富的 Linux 用户(或销售工程师),但他们对 Tomcat、Jetty 等并不真正了解,我认为他们也不应该了解。
所以我看到了 3 种部署应用程序的方法。我还应该声明,这是我必须部署的第一个具有 Web 界面的应用程序,因此我以前从未真正遇到过这个问题。
首先是将应用程序部署到现有的 Web 容器中。由于我们只部署到 Suse 或 RedHat,这似乎很容易做到。然而,我们并不赞同在一个 Web 容器中运行多个应用程序的想法。这使得仅删除一个应用程序变得更加困难。
下一个选项是仅捆绑 Tomcat 或 Jetty,并让启动/关闭脚本启动我们捆绑的 Web 容器。
或者第三,嵌入..这可能会提供与第二个选项相同的用户体验。
我很好奇其他人在遇到这个问题时会怎么做,以使其对最终用户而言尽可能简单易懂。
我几乎排除了部署到现有 Web 容器的可能性,因为我们经常喜欢设置每个应用程序的资源限制和 CPU 亲和性,我相信这会影响部署到 Web 容器/应用程序服务器中的所有应用程序,而不仅仅是特定的应用程序.
谢谢。
最佳答案
部署多个 war 文件(或在完整的 Java EE 应用程序服务器的情况下部署 ear 文件)是一个曾经是 promise 的想法,但在实践中并没有很好地发挥作用。
一个主要问题是,尽管取得了重大进展,但 EAR 的 WAR 的热重载仍然存在问题。内存泄漏、资源泄漏、类加载器问题……它们一直在发生。因此,最安全的重新部署方法是重新启动整个 servlet 容器或应用程序服务器,但这会关闭在其上运行的所有其他应用程序。
将多个应用程序部署到单个 AS 的第二个问题是它们之间只是一个薄薄的隔离层。应用程序可以从其他应用程序访问 JNDI 中的资源。这对于协作应用程序可能不是问题,但对于可能相互敌对的应用程序来说确实是个问题。
一般来说,servlet 容器并不能替代多任务、隔离的操作系统。
随着像 Xen 这样廉价而高效的虚拟化产品的出现,每个 servlet 容器只有一个应用程序(实际上是捆绑它们)并将它们部署到 Xen 客户端似乎是一个更好的选择。
这样做的另一个好处是,它提供了一种更简单的途径来升级您的应用程序所依赖的库。如果您将 Tomcat 6 的固定安装视为部署平台,那么单个应用程序不能仅从 Tomcat 7 升级到 Servlet 3.0,因为这会影响在同一 Tomcat 上运行的所有其他应用程序。这对于像 JBoss AS 这样的完整 Java EE 堆栈来说更为重要,因为它们捆绑了更多的库。
在实践中,这通常意味着使用运行多个应用程序的固定 Tomcat,您永远无法升级您的应用程序以利用 Tomcat 提供的更新的库/api,因为总会有一些其他应用程序出于某种原因或其他原因无法升级。这很快就会变成一场噩梦。
关于java - 部署到 Web 容器、捆绑 Web 容器或嵌入 Web 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4548457/
我有一个要提交的 iOS 应用程序,我的应用程序在我的 iPhone 上运行。我将 apple id 帐户添加到 Xcode 并在 Xcode 的常规部分下输入我的 bundle id,然后单击“修复
我有一个SDK项目,它在gradle中引用了很多依赖项。我必须要求SDK用户在项目中使用SDK时添加这些依赖项。问题是,每当我添加一些新的依赖项或将当前的依赖项替换为新的依赖项时,我都必须要求用户进行
我使用 Microsoft.AspNet.Web.Optimization用于 css 和 js 捆绑和缩小的 nuget 包。 我在这个路径 ~/bundles/shared.css 中创建了一个包
我使用 laravel-mix(包括 webpack)来打包 JS 文件。使用 BundleAnalyzerPlugin,我发现我的输出文件包含多个 JQuery 库副本,这增加了输出文件的大小。 它
我正在使用 maven felix 插件来创建 OSGi 包,但是假设您有一个包“com.example”存在于project1和project2中。此外,project2 依赖于 project1。
当我尝试捆绑我的 Meteor 应用程序时,我得到: $ meteor bundle app.tgz Errors prevented bundling: Exception while bundli
因此查看 bundleconfig.cs 它应该允许基于设备类型进行捆绑。唯一的问题是因为它在 App_Start 中,所以不允许我访问 Request 对象。有什么想法可以实现基于设备的捆绑吗? 最
上下文 http://news.ycombinator.com/item?id=4125530 问题: 这是否最终意味着 Java 应用程序将能够发布到 Mac 商店? (因为 JRE 自动捆绑到应用
我正在尝试为一个 React/Redux 项目创建我自己的 Webpack 配置。配置看起来很好,但是包的大小很大(在开发模式下,我知道如何在生产模式下减少它) 我的 package.json 看起来
所以我一直收到这个 Bundle ID 错误,说它不可用而且我真的不知道如何修复它。这是错误: 提供的数据有误。请更正并重新提交。标识符为“com.team.AppName”的 App ID 不可用。
我正在浏览 SO 并找到了 some code这向我提出了一个问题。 struct node* BuildOneTwoThree() { struct node *list = malloc(3 *
我正在为 Delphi XE7 使用 intraweb XIV 捆绑版。当我在这个新的捆绑版本中测试一个 intraweb XII 应用程序时,SSL/TLS 不工作。捆绑版本不支持 SSL/TLS?
预期: 当我使用 webpack 构建时,我的所有 JS 文件都会被捆绑,除了 ./src/Portfolio 目录中的文件(根据我的 Webpack.config.js 设置)。 实际: Webpa
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我有一个项目引用了许多开源库,有些是新的,有些不是很新。也就是说,它们都很稳定,我希望坚持使用我选择的版本,直到我有时间迁移到更新的版本(我昨天测试了 hsqldb 2.0,它包含许多 api 更改)
我正在创建一个 REST API,并且我一直在研究允许捆绑来自客户端的请求的想法。我所说的捆绑是指他们可以发送一个包含多个“真实”请求的请求,然后将它们一起交付给客户。通常是 javascript a
在我的 AngularJS 项目中,我有一个 HTML 模板,其中 innerText 位于新行中: Click here 我正在使用 webpack 作为我的捆绑器。我希望它 trim
我已经为我的应用程序创建了一个静态库。现在,我的应用程序使用我在应用程序中引用的 plists 和图像等来源。 如何捆绑这些图像并将它们与静态库一起交付,以及我需要在源加载代码中进行哪些更改才能从该
所以, 我是 webpack 的新手,我正在开发一个项目,在该项目中我们只加载一个文件 bundle.js,我知道我可以单独加载文件。 但我想要的是bundle.js中未缩小的文件。目前我正在获取缩小
如何使用用户区域设置登录路径?我试过了 check_path: /{_locale}/login_check 和 check_path: /(en|ru)/login_check 但什么也没有
我是一名优秀的程序员,十分优秀!