JNDI服务--jnp

Java 应用程序与Java应用程序通信一般采用JNDI方式。

本文将jboss中的jndi服务单独抽取出来,放到自己的应用程序中中,方便不同的java程序互相远程调用。用户不用单独写Socket进行通信(自己管理消息应答--网络包的丢失),更具有实时性,确保消息准确可靠的传输,更方便快捷开发Java应用程序。

 

jnpserver 路径为:

https://repository.jboss.org/nexus/service/local/repositories/releases/content/org/jboss/naming/jnpserver/5.0.5.Final/jnpserver-5.0.5.Final.jar

其依赖两个jar:     jboss-logging-spi-2.0.5.GA.jar       jboss-common-core-2.2.10.GA.jar

 

一、

在自己的代码中使用jndi ,首先要启动这个服务,

 

新建一个线程专门启动服务

 

 

				private NamingBeanImpl namingBean;
				private Main namingMain;
				@Override
				public void run() {
					
					if (namingBean == null) {
						namingBean = new NamingBeanImpl();
						try {
							namingBean.start();
							namingMain = new Main("org.jnp.server");
							namingMain.setNamingInfo(namingBean);
							namingMain.setPort(1099);//
							namingMain.setBindAddress("192.168.8.34");//为本机IP
							namingMain.start();
						} catch (Exception e) {
							throw new RuntimeException("启动JNDI服务失败!",e.getCause());
						}
					}
				}

 注意需要增加配置文件jndi.properties,否则提示需要环境变量设置。

 

# DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
#
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

二、 

使用时 和同使用JBOSS中的jndi相同,简单实例如下:

 

 

		Hashtable<String, String> c = new Hashtable<String, String>();
		c.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
		c.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
		c.put("java.naming.provider.url", "jnp://192.168.8.34:1099");

		try {
			ctx = new InitialContext(c);
			ctx.bind("test", new String("test"));//绑定一个接口
			String s = (String) ctx.lookup("test");//查找一个接口
			System.out.println(s);//输出结果
		} catch (NamingException e) {
			e.printStackTrace();
		}
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值