Spring在JPPF中遇到classloader的问题。

本文介绍了解决JPPF环境下使用Spring时遇到的无法找到特定Namespace的问题。通过调整classloader设置并手动打包必要的Spring配置文件,成功解决了因不同classloader导致的配置缺失错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有个JPPF的task是使用spring的。当spring配置文件中使用了 [quote]xmlns:context="http://www.springframework.org/schema/context"[/quote]这个namespace时,会报找不到这个namespace的错误。 如下:

[quote][client: driver-3 (192.168.1.60:11198)] : Reconnected to the JPPF task server
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
Offending resource: class path resource [donkey-context.xml]

at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:281)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1250)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1243)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
[/quote]

通过看org.springframework.beans.factory.xml.PluggableSchemaResolver.getSchemaMapping(String systemId)的方法得知, 发生找不到META-INF/spring.schemas这个文件的原因应该是用了不同的classloader。 JPPF使用的是org.jppf.node.JPPFClassLoader,这是一个network classloader通过网络来加载class。 解决这个问题的方法就是把META-INF/spring.schemas和META-INF/spring.hanlders打包成一个jar。 仍到jppf node的lib目录下。 (我尝试过把spring.jar考到lib目录下。可是发现其他的一些依赖包都需要放到lib目录中了。 )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值