读书人

JNDI服务-jnp

发布时间: 2012-06-26 10:04:14 作者: rapoo

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;@Overridepublic 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");//为本机IPnamingMain.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.NamingContextFactoryjava.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();}
?

?

读书人网 >开源软件

热点推荐