我们有一个项目要使用 Storm,因此我们的代码必须打包在一个 jar 中。我们之前使用com.sun.jndi.fscontext.RefFSContextFactory
作为我们的InitialContextFactory
实现jndicontext
从系统配置目录中的文件加载绑定classpath
(工作正常)。然而,当尝试使用这个工厂从 jar 中加载上下文时,我们得到以下信息:
javax.naming.InvalidNameException: unknown protocol: jar
at com.sun.jndi.fscontext.FScontextFactory.getFileNameFromURLSTring(FSContextFactory.java:139)
at com.sun.jndi.fscontext.RefFSContextFactory.createContext(RefFSContextFactory.java:31)
这是由于工厂试图从以下 URL 加载 jdni 上下文:
“jar:file:/mount/storm-dir/data/storm.jar!/jndicontext”
这是一个有效的 URL,但工厂不知道如何打开一个 jar。有没有实现javax.naming.spi.InitialContextFactory
呢?或者有没有办法解决这个问题并将配置目录添加到 Storm 的classpath
?