鉴于ofbiz使用文件系统( ofbiz.home + component:// )加载大部分资源。
是指在一个传统的servlet环境中,webapp真正需要访问的内容我想知道我们是否可以使用前端控制器命名空间将多个webapps打包成一个单一的webapp,以便战争映射到单个根内容,如 / ( ROOT on tomcat)和 / content , / webtools , / catalog , / ecommerce 等仅仅是URL命名空间/ subcontexts而不是单独的webapps。 framework / common / webcommon / WEB-INF / controller.xml 可以成为/(Tomcat中的ROOT)的根控制器,并为所有webapps提供checkLogin,autoLogin等,而不需要每个控制器都必须导入该控制器。 XML
当我们想要转移到其他容器时,我们可以简单地使用部署模型,例如weblogic,jboss等,我们会更好地构建一个单独的webapp,并将其所有依赖项整齐地打包到其中WEB-INF / lib 这样它可以与同一容器中的其他部署共存,而不会干扰它们的依赖关系及其版本...
我相信struts有这种模块化命名空间,可以有一个根级别struts.xml(我们的case controller.xml),每个模块都是一个带有自己的模块/ struts.xml或module / struts-module的文件夹.xml等...
我个人认为这会有所帮助..我对这些缺点没有足够的考虑。可能会有很多?我老实说不知道。我没有充分考虑主题。开发人员显然不希望看到代码的布局或组织方式发生任何变化..所以有些未成年人? :)在框架中核心MVC代码的变化,我们可以使用一个简单的ant构建脚本来支持这种部署,该脚本将候选webapps分级为合并的单片webapp ...
我希望看到关于这个想法的优点的辩论......如果我得到一些方向和投入,我甚至愿意投入一些时间来完成这项工作..
答案 0 :(得分:3)
答案 1 :(得分:3)
这是Apache OFBiz如何构建的一个难点部分。使用EAR文件可以正常工作,但EAR文件中的共享类路径资源是特定于应用程序服务器的,您必须部署在支持限制选择的EAR文件的容器中。
其中一个限制是controller.xml文件中的请求的平面命名空间,您描述的将是处理它的最佳方法(为每个OFBiz组件应用程序使用不同的ControlServlet挂载点)。这样做可能需要对URL编写进行一些代码更改(@ofbizUrl FTL标记和其他地方使用的底层代码)。编写ant目标或构建WAR文件的东西还需要一些工作,从各种组件(或者只是那些所需的组件)中提取所有webapps,编写组合的web.xml文件等等。 / p>
这是OFBiz公认的问题,对于大多数部署而言不是问题,但确实使其与其他应用程序一起缩小或托管变得更加困难。您可以通过OFBiz组件添加其他Web应用程序以在嵌入式servlet容器上托管它们,但我不认为这是您正在寻找的。 p>
在OFBiz中进行此类和许多类似更改的问题之一是大型代码库,庞大的用户群以及对此类事情有不同意见的大型提交者组。由于这些原因和其他原因,很多改进OFBiz的想法在那里都不容易实现,这就是我在2010年开始实施Moqui框架项目的原因。
Moqui使用单个WAR文件进行部署,并且可以具有外部或嵌入式运行时目录,以便在WAR托管服务(如AWS ElasticBeanstalk)上轻松部署,以及插入到诸如Apache Tomcat之类的servlet容器中。 WAR文件也是一个可执行的JAR文件,使用嵌入式Winstone servlet容器,以便于开发和自动化测试。有关运行和部署Moqui的详细信息:
顺便说一下,这是改进OFBiz的数百个想法之一,使其成为Moqui框架,以及与数据模型和服务(Mantle Business Artifacts)的独立项目。这里有一般信息: