我有一个庞大的单片webapp,每当我对webapp的特定部分进行更改时,我都被迫部署整个应用程序。
我想根据功能将其分解为更小的块(例如,在银行网站 - 我想从网上银行功能中分离信息,所以如果我改变网上银行功能,我只是部署该部分)
这里的挑战是在webapp中存在某些共同元素,就像在整个应用程序中共享的公共类一样。
有关Webapp分区的不同方式的任何想法吗?感谢。
答案 0 :(得分:1)
这不是特定于tomcat的,但一般情况下,如果要拆分Web应用程序,则需要某种方式在分布式部分之间共享不同的状态。您可以使用数据库或memcached存储来执行此操作以获取会话信息,但请确保每个应用程序都可以读取公共会话数据(某些框架将使用密钥来加密会话数据,并且需要具有相同的密钥才能读取它)。我不认为会话信息的大多数cookie存储将以cookie在应用程序之间不能正确保存的方式进行哈希。
按功能分解是最有意义的。查看可以分离后端代码的位置。如果你有一个很好的restful类型网址,你可以查看你的URL以帮助确定好的分区。
另外,如果你有一个大的静态部分,你要单独更新,也许应该由tomcat以外的东西提供。
对于常见的类,您可以将类实现放在tomcat / lib文件夹中的jar中。它们可供整个服务器使用。它们无法很好地适应您的Web上下文(除非您将上下文传递给它们)并且您必须重新启动整个服务器以更新jar文件以使tomcat重新加载它。
也许你可以通过接口来解决问题,让你在每个分区中更加独立,允许它们以某种方式独立编译。也许某些远程方法调用也可以帮助您将常用函数移动到单个.jar或.war。