我想在Java/Spring/Hibernate中开发一个web应用程序,作为我可以连接插件(即CRM插件、ware插件、销售插件)的业务平台。这些插件可以以树的方式依赖于其他插件。父项目将打包为war,具有所有的基本配置和外观(Spring、CSS、脚本)、准备就绪的用户和组管理、安全设置等。
总之,我希望它的行为和外观有点像Joomla,但使用不同的工具为不同的目的而构建。关于这个项目,我有几个问题:
最后但并非最不重要的是,这是正确的道路,还是一条死胡同?为这些业务需求创建一个单独的web应用程序会更好吗?
发布于 2011-03-05 19:06:57
有很多方法来构建插件模块。一些想法:
您可以将每个插件模块打包为jar,并在这个jar的类路径根中放置一个带有bean配置的spring配置文件,如果您使用的是特定的插件。您可以在web应用程序中“打开”此包的bean,只需将该文件添加到您的contextConfigLocation参数中:
<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的东西
好吧..。这些都是一些想法。我希望它在任何方面都有帮助。;-)
发布于 2011-03-05 15:22:17
我认为这是一个很好的方式来设计一个web应用程序,视需要而定。我使用插件是因为我有几个客户端使用相同的代码基和不同的需求。如果您正在开发一个安装,我想说,不要浪费您的时间。
现在是如何做的。“插件”是一个非常模糊的概念。我用过插件
现在的问题是,这是如何运作的。方法拦截器使用org.aopalliance.intercept.MethodInterceptor工作。后台处理器使用TimerTask。web应用程序中的附加视图使用Spring路由。
我的插件被打包为JAR,并在应用程序启动时被发现为Spring应用程序上下文。
这都是非常笼统的,但可能会给你一些想法去摆脱。
https://stackoverflow.com/questions/5202814
复制相似问题