业务Web应用程序平台结构

时间:2011-03-05 09:11:48

标签: java spring maven

我想在Java / Spring / Hibernate中开发一个Web应用程序,作为我可以连接插件的业务平台(即CRM插件,ware插件,销售插件)。这些插件可能以树的方式依赖于其他插件。父项目将打包为 war ,具有所有基本配置和外观(Spring配置,CSS,脚本),随时可用的用户和组管理,安全设置等。

总而言之,我希望它的行为和看起来有点像Joomla,但是可以使用不同的工具为不同的目的构建。我对该项目有几个问题:

  1. 您知道有哪些开源项目可以提供这样的平台吗?
  2. 如果没有,Maven是否适用于管理这些插件?
  3. 打包和部署这些插件的最佳方法是什么?
  4. 最后但并非最不重要的是,这是正确的方法,还是死路一条?为这些业务需求创建单独的Web应用程序会更好吗?

4 个答案:

答案 0 :(得分:1)

有很多方法可以构建插件模块。 一些想法:

您可以将每个插件模块打包为jar,并在此jar的classpath根目录中,将spring配置文件与beans配置放在一起,这样如果您使用的是特定的插件。只需将此文件添加到web.xml中的contextConfigLocation参数,即可在Web应用程序上“打开”此包的bean:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:module1.xml
        classpath:module2.xml
        classpath:module3.xml
        classpath:module4.xml
    </param-value>
</context-param>

因此,您可以在Web应用程序中使用这些bean。另一种方法是使用更注释驱动的方法。或者你可以混合方法。

前段时间,我构建了一种方法,通过检测类路径中特定抽象类(契约)的所有实现,自动热检测(在执行时,无需重新启动应用程序)桌面应用程序中的插件。所以,我必须要做的就是建立一个新的插件,就是实现这个“契约”。我已经使用了一些“类加载器”的好东西来做到这一点。

在谈论“模块”时,您可能希望看到有关OSGi

的内容

嗯......这些都是一些想法。我希望它有任何帮助。 ; - )

答案 1 :(得分:0)

我认为这是设计Web应用程序的好方法,具体取决于要求。我使用插件,因为我有几个客户端使用相同的代码库,具有不同的要求。如果你正在开发一个装置,我会说不要浪费你的时间。

现在为了方法。 “插件”是一个非常模糊的概念。我用过插件

  • 拦截方法调用
  • 运行后台进程
  • 在我的网络应用程序中添加其他视图

现在的问题是,这是如何运作的。方法拦截器使用org.aopalliance.intercept.MethodInterceptor工作。后台处理器使用TimerTask。 Web应用程序中的其他视图使用Spring MVC路由。

我的插件打包为JAR,并在应用程序启动时作为Spring应用程序上下文发现。

这一切都很一般,但可能会给你一些想法。

答案 2 :(得分:0)

  

你知道任何开源的吗?   提供这样一个平台的项目   准备好了吗?

查看Spring Roo

  

如果不是maven适用   管理那些插件?

是的,确实如此。看看AppFuse如何使用它。

  

打包的最佳方式是什么?   部署那些插件?   再次,检查一下Spring ROO或AppFuse是如何做到的。

希望有所帮助。

答案 3 :(得分:0)

*

  

最后但并非最不重要的是,这是正确的方式,还是死了   结束?为这些创建单独的Web应用程序会更好吗?   业务需求?

*

我在使用JPA进行区域模块化方面有负面经验。例如,@ Entity Customer包含在CRM模块中,但是从其他模块中大量使用。第一个自然想法一个模块=自己的持久性单元很难实现,JPA应该跨模块,模块化思想走向死胡同,模块不分离。

我使用了“在过程中和JAR中”的模块化,构建了一种结构,一些菜单/实体等属于较轻的“模块”