WebObjects/Web 应用程序/开发/直接连接
默认情况下,Xcode 和 Eclipse/WOLips 都将配置您的应用程序以使用直接连接。当您的 WebObjects 应用程序启动时,它会在特定端口(由 WOPort 配置选项分配)上监听。在完整的部署场景中,此端口由 mod_WebObjects 适配器或 WebObjects cgi-bin 适配器用于在 Apache 和您的应用程序之间进行通信。但是,也可以完全在直接连接端口上运行开发(即没有 Web 服务器)。在此配置中,一个明显的区别是所有资源都由直接连接服务器提供,而不是 Apache 场景,在 Apache 场景中,资源由 Apache 直接提供,您的 WebObjects 应用程序仅处理应用程序请求。
警告- wotaskd 依赖于启用直接连接,以便适配器能够与之通信。请勿在您的服务器上全局禁用直接连接。例如,如果您从应用程序服务器主目录的 WebObjects.properties 文件中禁用直接连接,您将阻止 wotaskd 对其分配端口上的请求做出响应。
- 配置您的 Apache 使用 mod_WebObjects 或 cgi-bin 适配器
- 确保 wotaskd 正在运行
- 将 WODirectConnectEnabled 设置为 false
- 设置您的 WebServerResources 文件夹,使其可被 Apache 访问
- 盈利
我听说过关于直接连接很糟糕的所有评论,我也多次被它的怪癖所困扰,但我想知道那些避开直接连接的人他们的工作流程是什么,以及他们如何从中受益(尤其是如果他们使用 Eclipse/WOLips)。
我仍然使用直接连接,主要是因为我已经习惯了工作流程,并且现在已经找到了大多数可能出错的东西。我喜欢我的所有开发资源都在一个项目中,并且在我使用直接连接时,我似乎在 WOBuilder 中获得了一些好处。
也许是因为我的大多数项目主要关注数据而不是展示(我只有一些图形和偶尔的样式表 - 虽然我开始更多地使用样式表),而且我在 Windows 和 Mac 之间来回开发(所以脚本编写可能会变得很痛苦)。我的应用程序还没有因为加载图形的速度而受到影响(更重要的是数据库访问的速度)。
这不是我害怕 Web 服务器,我只是懒惰:) 并且不习惯在“拆分部署”而不是“拆分开发”的情况下进行工作流程。您如何对 Web 资源进行版本控制和管理,这些资源与您的开发资源位于完全不同的位置(您是否在 Eclipse 中使用资源文件夹,或单独的项目?或者我还没有了解到的其他一些不错的 Eclipse 功能?手动复制?)。您如何处理跨开发/暂存/生产的部署?您需要定制或修改您的项目多少?
我绝对可以在具有大量展示或专门的图形设计师的网站上看到使用 Web 服务器的真正好处,但我通常在一个 2-4 名开发人员的小团队中工作,展示很少。
我确信有一种比我正在使用的更好的工作流程,我很好奇大家认为 WO 的开发和部署最佳实践是什么。我错过了什么?
首先,这不仅仅是关于图像。它关乎拥有一个真正的 Web 服务器的功能,以及避免只有在您将应用程序迁移到通过真正的 Web 服务器运行时才会出现的故障。考虑以下情况:
- 缓存,mod_expires 不是您的朋友
- HTTPS
- SSI
- 重写规则
- 只有在通过 Web 服务器时才存在的标头
我确信您还能想到更多差异。我宁愿在部署中获得所有服务并开发,并且在应用程序在生产环境中运行了半天之前就发现出现的故障!我更喜欢我的痛苦是在闲暇时,而不是在惊慌中。而且,至少在 OSX 上,让 Apache 运行非常容易。
至于工作流程,什么工作流程?我们从源代码存储库中看到的“项目”是文件夹的层次结构。一个是用于代码的,这就是 WO 项目所在的位置。另一个是 DocumentRoot,这就是,嗯,文档根目录内容所在的位置。其他文件夹用于文档、设计、测试等。可以轻松地将每个文件夹检出到其应该去的位置。如果您的图像大多是静态的,那么要做的事情就更少了。如果它们经常发生变化,那么设计师等可以在他们熟悉的方式下签入和签出他们需要的内容,而无需弄清楚像 Eclipse 项目这样的神秘事物。对本地文档根目录的图像更新与对工作区的代码更新的方式相同。
对于部署,我们有脚本可以执行所有代码的命令行 Ant 构建,将所有各种资源(包括文档根目录)打包成 tar 文件,并通常创建一个安装包。目标服务器上的另一个脚本会获取该包,解压缩它,并将位复制到它们应该去的位置。我不明白为什么必须进行拆分安装会使它更容易。