打包Java EE应用程序

时间:2015-02-14 21:17:30

标签: java-ee war packaging ear java-ee-7

我需要开发三种不同的应用程序。但所有这些都有一些共同点,例如用户管理和一些业务逻辑。所以我想把这个常见的部分放在单独的jar(war?)中,并将它作为这三个项目中的依赖项使用。据我所知,如果我有多次战争,我不能在战争之间分享会议。因此,对于一个应用程序进行两次战争似乎不是很好的选择。但是在这个常见的部分我会有一些servlet和websocket,所以我应该把它打包成战争。所以我对正确的方法感到困惑。理想情况下,我想在一场战争中组装每个应用程序,在我看来比使用ear更容易,而java ee 7允许这样做。

3 个答案:

答案 0 :(得分:1)

我不认为有任何方式可以分享会话,无论如何它可能不是一个好主意,但您可以使用多种方式之一实现单点登录(SSO)方法和/或使用域范围的cookie,并使用该信息在数据库中查找信息。

保持会话非常轻,通常是一个好主意,例如:只在会话中存储一个用户密钥,无论如何都要在数据库中查找你需要的东西,所以这不是很大的离开。

在这种情况下,将您的应用程序打包为单独的战争或耳朵并不重要,但是,如果将其打包为耳朵,则可以在应用程序之间共享库而不会重复它们。如果您打包为单独的战争,则必须包含“共享”#39;每次战争中的罐子。

答案 1 :(得分:0)

只是为了澄清GreyBeardedGeek的回答:

将您的常见依赖项打包到某些jar中,并将它们包含在依赖战争中。 (Wars是Web应用程序存档,即它们包含将由Web容器和相关部署描述符(web.xml)管理的类(servlet),不能使用war来打包依赖项)。

如果你想避免多次加载依赖项(jar),你可以在同一个耳中打包3个不同的应用程序(war),并将共享依赖项(jar)放在ear lib目录中。
在这种情况下,依赖项将在耳朵级别进行分类加载,因此在所有应用程序之间共享,但您无法在不同的应用程序中使用这些jar的不同版本。

答案 2 :(得分:0)

我看看The Java EE 7 Tutorial。查看案例研究部分。你会感兴趣的有两个; (1)"杜克大学的辅导案例研究实例" (2)"杜克大学森林案例研究实例"。两者都显示了这是如何完成的。后者是一个简单的电子商务应用程序,包含多个Web应用程序;杜克的商店,杜克的货运,杜克的付款,杜克的资源,实体&活动。这些可以在其他项目中共享。

您可以使用these说明获取代码