我们有一个项目正在使用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”
这是一个有效的网址,但工厂不了解如何打开jar。是否有javax.naming.spi.InitialContextFactory
的实现?或者,有没有办法解决这个问题,并为Storm的classpath
添加一个配置目录?