Reaproveitamento de código em um sistema web

Senhores(as) tenho a seguinte dúvida e gostaria da sua ajuda…
Estou desenvolvendo um sistema que possuirá diversos módulos, como, financeiro, contabilidade, atendimento a clientes, etc.
Estava pensando em criar um projeto para cada módulo, acessando o mesmo banco de dados. Por que isso? Caso eu tenha que fazer alguma manutenção em um módulo apenas, não precisarei fazer o deploy de um único projeto, parando os módulos que não estão envolvidos.
Para a regra de negócio eu criei uma API, ou seja, um projeto java e gerei o .jar que será adicionado a lib de cada projeto (módulo). A questão é…como farei isso com as telas (arquivos xhtml)?

Espero ter sido bem claro…

Até onde sei, para atualizar sua aplicação, será necessário parar o servidor e fazer um redeploy do arquivo war, pois todos os arquivos jar de bibliotecas estão dentro dele.

Conheço um projeto que trabalha com modulos onde cada usuário pode instalar apenas o que precisar, talvez seja interessante você conversar com eles ou dar uma olhada em como eles fazem isso, o código fonte está disponível no github, segue o endereço oficial do proejto http://openmrs.org/

com maven da para modularizar relativamente facil
ficaria algo assim:

Projeto Principal
– Modulo A (war) -depende de Modulo ComumAB
– Modulo B (war) -depende de Modulo ComumAB
– Modulo Comum AB (jar)
se as regras especificas da camada A usufrui a infra/regra do modulo comum

pom proj principal:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tio</groupId>
  <artifactId>ProjetoPrincipal</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
  	<module>ModuloA</module>
  	<module>ModuloB</module>
  	<module>ModuloComumAB</module>
  </modules>
</project>

pom modulo A

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.tio</groupId>
		<artifactId>ProjetoPrincipal</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>ModuloA</artifactId>
	<packaging>war</packaging>
	<dependencies>
		<dependency>
			<groupId>com.tio</groupId>
			<artifactId>ModuloComumAB</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>
</project>

pom modulo B

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.tio</groupId>
		<artifactId>ProjetoPrincipal</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>ModuloB</artifactId>
	<packaging>war</packaging>
	<dependencies>
		<dependency>
			<groupId>com.tio</groupId>
			<artifactId>ModuloComumAB</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>
</project>

pom modulo comum AB

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.tio</groupId>
    <artifactId>ProjetoPrincipal</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ModuloComumAB</artifactId>
</project>