0

我正在尝试在同一个应用程序中使用 spring 版本:第一个是带有 spring 2.6 的 webapp,第二个是带有 spring 4.0.2 的 jar 客户端。客户端与另一个应用程序通信,并将成为 webapp 的依赖项。问题是类加载器只会加载一次来自 spring 的公共类,它肯定会失败。

我尝试使用 ElasticSearch 方法来使用阴影依赖项(maven shade 插件)并将 spring 从客户端重新定位到不同的包(从 org.springframework 到 my.springframework),并且 uber jar 似乎构建得很好。

问题是 Spring 基于 spring.schemas 和 spring.handlers 来验证 xml 配置文件并从类路径(META-INF 文件夹和此路径在 Spring 代码中硬编码 - eq PluggableSchemaResolver)加载这些文件。我修改了这些文件以从 org.srpingframework 指向 my.springframework。

在运行时,类加载器似乎从 webapp 中读取这些文件,该文件具有这些文件但具有真正的 spring 路径,异常类似于

org.realsearch.springframework.beans.FatalBeanException:命名空间 [ http://www.springframework.org/schema/context]的类 [org.springframework.context.config.ContextNamespaceHandler]没有实现 [my.springframework.beans。 factory.xml.NamespaceHandler] 接口。

对我来说,实现我正在尝试的目标似乎是不可能的(在同一应用程序中使用弹簧版本,其中一个被重新定位)。这里有什么想法吗?我是赖吗?:d

4

0 回答 0