我已经找到 访 最近,并认为它看起来像一个真正的好主意模块化Java应用程序。

但是,我想知道如何访会的工作在一个网络应用程序,其中你不只是代码担心-还HTML、图像、CSS,这样的事情。

在工作我们建设一个应用程序,它拥有多个'的标签',每一个选项之一的应用程序的一部分。我认为这真的可以受益于采取一个访的方法-但是我真的不知道什么是最好的方式来处理所有平常的网络应用程序的资源。

我不确定它是否使得有任何区别,但我们使用和JSF 借助该 (其中增加了另一层的问题,因为你有导航的规则,并且必须指定所面临的配置文件在您的web.xml...doh!)

编辑:根据 这个线程,faces-config.xml 可以将文件加载了从罐子文件-所以它实际上是可能有多重faces-config.xml 文件包括在内,而无需修改web.xml你拆分入罐子的文件。

任何建议,将不胜感激:-)

有帮助吗?

解决方案

你是非常正确的思维有协同作用在这里,我们有一个模块化的网络应用程序,该程序本身组装自动从独立的部件(访束)在每一束贡献自己的网页、资源、css和任选javascript。

我们不使用JSF(Spring视这里的),所以我不能评论有关增加的复杂性,框架中的一个访的上下文。

最框架或方法那里,仍坚持"旧"的思维方式:一种战争的文件表示你的网络应用程序和随后的许多访束和服务,但几乎没有自己关心的模块化的GUI本身。

先决条件的设计

与访的第一个问题的解决是:什么是你的部署方案和谁是主要的集装箱?我的意思是,你可以部署的应用程序在一个访运行和使用其基础设施对于一切。或者,可以嵌入一个访运行时,在传统的应用程序服务器然后你会需要重新使用的一些基础设施,具体来说,你想使用的应用服务器的servlet engine.

我们的设计是目前的基础上访作为容器和我们使用为httpservice)提供的访我们的小容器。我们正在考虑提供某种形式的透明之间的桥梁的一个外部小容器和访为httpservice),但这项工作仍在进行中。

建筑草图的一个软弹簧+访模块化webapp

因此我们的目标不是仅仅服务于一个网络应用程序通过访,但也适用于访的部件的模型的网UI本身,使它组合式、可重复使用的、动态的。

这些是组件在系统:

  • 1中央束,需要照顾的桥接的弹簧视与访,具体地说它采用 代码由贝恩德*科尔布 让你登记的弹簧DispatcherServlet与访作为一个servlet。
  • 1定义URL映射器,注射到DispatcherServlet和提供的映射入HTTP请求,向正确的控制器。
  • 1中央Sitemesh基于装饰JSP义的全球布局的网站,以及中央CSS和Javascript库,我们希望提供为默认。
  • 每一束希望促进网页向我们的网UI已发布1或多个控制器作为访服务,并确保 登记其自己的servlet和自己的资源(CSS,JSP、图像,等等) 与访为httpservice).登记是与为httpservice)和关键的方法是:

    为httpservice).registerResources() 和 为httpservice).registerServlet()

当一个网ui贡献束激活并公布其控制器,它们会自动回升,由我们的中央网ui束和上述定义URL映射器收集这些控制器服务并保持一个最新的地图网址控制器的实例。

然后当HTTP请求配备一定的网址,它认定相关的控制器,并将请求。

控制器,它的业务,然后返回任何数据,应该呈现 视图的名称(a JSP在我们的情况)。这JSP位于控制器的捆绑并且可以访问和提供的中央网ui束,正是因为我们去注册资源的位置与为httpservice).我们的中央图解决程序,然后合并这JSP与我们的中央Sitemesh装饰和吐出来得到的HTML给客户。

在知道这是相当高的水平,但没有提供完整的执行情况很难充分解释。

我们的关键的学习点,这是来看看 什么贝恩德*科尔布做的 与他的例子JPetstore转换到访和利用这些信息来设计我们自己的架构。

恕我直言,目前有太多的宣传和重点得到访以某种方式嵌入传统Java EE基础的应用程序和非常小的想法投入实际使用的访的成语和其优良的成分的模型来真的能让设计的组件化的网络应用程序。

其他提示

查看 SpringSource dm Server - 完全根据OSGi构建并支持模块化网络的应用服务器应用。它有免费,开源和商业版本。

您可以从部署标准WAR文件开始,然后逐渐将应用程序分解为OSGi模块,或者在OSGi中说“捆绑”。正如您对SpringSource的期望一样,服务器对Spring框架和相关Spring组合产品提供了出色的支持。

免责声明:我使用此产品。

请注意Spring DM服务器许可

我们一直在使用带有OSGi的 Restlet ,以便通过嵌入式Http服务实现良好效果它实际上是Jetty,但也可以使用tomcat。

Restlet没有最小的XML配置需求,我们所做的任何配置都在BundleActivator中(注册新服务)。

在构建页面时,我们只处理相关的服务实现以生成输出,装饰器样式。插入的新捆绑包将在下次渲染时添加新的页面装饰/小部件。

REST为我们提供了干净,有意义的URL,同一数据的多个表示,似乎是一个可扩展的隐喻(很少有动词,很多名词)。

我们的一个额外功能是对缓存的广泛支持,特别是ETag。

、基于容器的架构、似乎是工作上的一个有趣的模块化网络框架建立在访叫 、基于容器的架构、片.更多信息可在以下博员额:

查看 http://www.ztemplates.org ,这本书简单易学。这个允许您将所有相关模板,javascript和css放入一个jar中并透明地使用它。意味着您甚至不必关心在使用提供的组件时在页面中声明所需的javascript,因为框架会为您完成。

有趣的帖子。我有一个基于每个客户定制的Web应用程序。每个客户都会根据他们注册的内容获得一组核心组件和其他组件。对于每个版本,我们必须“组装”正确的服务集,并根据客户应用正确的菜单配置(我们使用struts菜单),这至少可以说是乏味的。基本上它是相同的代码库,但我们只是自定义导航以显示或隐藏某些页面。这显然不太理想,我们希望利用OSGi来组件化服务。虽然我可以看到这是如何为服务API完成的,并且有点理解如何将CSS和java脚本和控制器(我们使用Spring MVC)等资源捆绑在一起,你将如何处理像页面导航这样的“交叉”问题和一般工作流程,尤其是在您想要动态部署新服务并需要向该服务添加导航的场景中。可能还有其他“跨领域”问题,例如跨越其他服务的服务。 谢谢, 德克兰。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top