6

我们有一个项目要使用 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

4

0 回答 0