我正在尝试将应用程序 A 迁移到在 Oracle Enterprise Linux 操作系统上运行的 Weblogic 10.3.6 应用程序服务器。应用程序 B 已经驻留在该 weblogic 服务器中。应用程序 A 有一个带有用户登录功能的 GUI。但是,应用程序 B 没有。当前,应用程序 A 和 B 正在通过 MQ 进行交互。我的疑问是: 1. 在同一台服务器上同时拥有应用程序 A 和 B 耳朵是否可行?2. 如果是,他们如何进行内部沟通?3. 应用A的用户登录功能是否存在应用B的安全漏洞风险?
1 回答
1) 是的,在服务器上运行一个或多个 Ear 文件是完全合理的。可能存在性能问题,您可能需要仔细观察 JVM/Heap 内存(导致 OutOfMemoryError 的一个应用程序会同时关闭两者)。
2)取决于你希望他们如何沟通。最简单的方法可能是使用远程查找。WebLogic 为 JNDI 树中的应用程序上下文等提供所有查找。只要暴露方法允许远程调用(例如JEE 中的@Stateless @Remote 注解),就可以远程调用方法。如果您不想要快速通信,您还可以使用其他方法,例如 MDB(消息驱动 bean),甚至可以使用 Web 服务(只需绑定到具有不同上下文根的同一本地服务器)。
3)这取决于您如何登录。如果您使用 weblogic 状态来检查是否有人登录,那么登录到一个应用程序将让您登录到另一个应用程序。您需要查看 WebLogic 角色和策略。基本上将某些用户设置为一个应用程序的一个角色,并可能设置两种不同的身份验证机制。然后使用@RolesAllowed(或您喜欢的任何其他方式)阻止仅对给定角色访问类/方法。
如果您使用自己的登录方法,我看不到用户方面的问题。请注意使用了哪些代码,并确保不允许您不知道的远程查找(即注意可能受到注入攻击的方法,其中恶意代码可能会对其他应用程序进行远程查找)。如果您愿意,您仍然可以使用 WebLogic 角色和策略来阻止它。