为了测试的目的,我正在寻找一种简单的方法来启动独立的JNDI服务器,并将我的
javax.sql.DataSource以编程方式绑定到“java:/ comp / env / jdbc / mydatasource”.
服务器应该绑定到一些URL,例如:“java.naming.provider.url = jnp:// localhost:1099”(不必是JNP),以便我可以从另一个进程查找我的数据源.我不在乎我必须使用哪个JNDI服务器实现(但是我不想启动一个完整的JavaEE服务器).
这应该很容易,但令我惊讶的是,我找不到任何(工作)教程.
解决方法
JDK包含一个
JNDI provider for the RMI registry.这意味着您可以使用RMI注册表作为JNDI服务器.所以,刚刚开始
rmiregistry,将
java.naming.factory.initial设置为
com.sun.jndi.rmi.registry.RegistryContextFactory,你就走了.
RMI注册表有一个扁平的命名空间,所以你将无法绑定到java:/ comp / env / jdbc / mydatasource,但是你可以绑定一些东西,以便它接受java:/ comp / env / jdbc / mydatasource,但会将其视为单组件名称(谢谢,@EJP).
我已经写了一个小应用程序来演示如何做到这一点:https://bitbucket.org/twic/jndiserver/src
我仍然不知道JNP服务器应该如何工作.