我的商店已经运行Oracle的Application Server多年了。因此,在我们更好地了解之前,我们已经开发出一种规范,即将应用程序配置文件存储在WAR文件之外,并使用特定于Oracle的部署描述符将特定于应用程序的配置目录添加到每个应用程序中。此部署描述符允许我们在应用程序层添加类路径元素,而不必在WAR中包含所有依赖项。
现在我们面临升级到WebLogic 10.3的问题,我需要为依赖外部配置的应用程序找到替代方案。
WebLogic中是否有办法在应用程序级别将外部jar或目录添加到类加载器?我已经找到了将它们添加到系统类加载器的方法,但是我更愿意将它们添加到应用程序级别,以避免在修改部署描述符之外重新处理应用程序。
在WebLogic 10中是否可以实现这一点?
答案 0 :(得分:5)
经过进一步研究,我们了解了WebLogic的Generic File Loading Overrides功能。
此功能允许我们为应用程序使用部署计划,并为应用程序指定“config-root”。在config-root中,我们可以创建一个名为“AppFileOverrides”的目录,并覆盖WEB-INF / classes或WEB-INF / lib目录中的任何文件。
此功能的工作原理是在Web Application类加载器前面注入一个类加载器,因此在捆绑到Web应用程序存档中的任何内容之前,可以在此类加载器中找到从类路径加载的任何资源。
使用此功能,我们可以添加war文件中根本不存在的配置文件(理论上,类)。因此,我们能够模仿将配置文件保持在战争之外的功能。
继续前进,我鼓励我们的开发人员将配置包含在war文件中,但这对于遗留应用程序以及我们需要更改给定部署目标(dev vs production)的配置的情况非常有效< / p>
答案 1 :(得分:1)
使用共享库的部署可以引用外部jar。
粗略地说,外部罐子应该“部署”为库。然后可以使用library-ref描述符从应用程序的weblogic-application.xml中引用它们。
请参阅此doc。
尽管如此,我认为除了使用系统类路径之外,你还可以提供外部目录/配置文件。
答案 2 :(得分:0)
据我所知,Weblogic无法做到这一点。确实需要将外部配置文件添加到system classpath。你可以稍微调整一下类加载器(参见filtering和loading order),但没有什么可以在“应用程序级别”添加依赖项了。为此,如果上述场景不是一个选项,则必须运行分离的域。