2009-08-05 104 views
2

我有一个庞大的单片web应用程序,每当我对webapp的特定部分进行更改时,我都会强制部署整个应用程序。我希望根据功能将其分解为更小的块(例如,在银行网站 - 我想从网上银行功能中分离信息资料,所以如果我对网上银行功能进行更改,我会只需部署该部分)将webapp分解为多个部分(tomcat)

这里面临的挑战是跨Web应用程序存在某些通用元素,就像在应用程序中共享的通用类一样。

关于webapp分区的不同方式有什么想法吗?谢谢。

回答

1

这不是tomcat特有的,但总的来说,如果你正在拆分一个web应用程序,你需要一些方法来在分布式的部分之间共享不同的状态。您可以使用数据库或memcached存储来获取会话信息,但要确保每个应用程序都可以读取公共会话数据(某些框架将使用密钥来加密会话数据,并且需要所有密钥都具有相同的密钥才能读取它)。我不认为会话信息的大多数cookie存储都会以这种方式散列,因为cookie不会在应用程序之间正确保存。

按功能分解最有意义。看看你可以在哪里分离你的后端代码。如果你有很好的安静类型的URL,你可以看看你的URL,以帮助确定好的分区。另外,如果你有一个很大的静态部分,你要单独更新,也许这应该由tomcat以外的其他东西提供服务。

对于常见的类,您可以将类实现放置在tomcat/lib文件夹中的jar中。他们将可用于整个服务器。他们不能够很好地适应你的web上下文(除非你将上下文传递给他们),你将不得不重新启动整个服务器来更新jar文件以使tomcat重新加载它。

也许你可以用界面工作,让你在每个分区中更独立,允许它们以某种方式独立编译。也许某些远程方法调用也可以帮助您将常用功能移到单个.jar或.war中。

+0

谢谢Danivo。对不起,我的问题不清楚,会话只是一个共享实体的例子。我正在寻找任何共享的组件,例如一个由整个应用程序使用的类。 – rubyer 2009-08-06 01:01:42