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();
}
分享到:
相关推荐
- **`java.naming.factory.initial`**: `"org.jnp.interfaces.NamingContextFactory"` - **`java.naming.provider.url`**: `"localhost:1099"` **说明**: - JBoss使用`NamingContextFactory`作为初始化上下文工厂...
- **jndicontext-agent-applying.properties**:同样位于`jboss-4.0.2\server\default\deploy\jms`目录下,包含了JNDI服务的连接信息。 #### 4. 修改端口号 下面详细介绍每个配置文件的具体修改步骤: ##### 4.1 ...
发布服务则借鉴了Spring的ServiceExporter,V0.7版本中暂时只支持通过JNDI发布,利用JBoss JNP作为JNDI服务器,并支持Hessian和Web服务方式。 值得注意的是,如果服务应用端不是基于Spring实现,可能需要自定义...
JNDI服务器选用JBoss的JNP,提供服务注册和发现的接口。 在DSF V0.7之后的版本,可能会根据实际需求引入更多机制调整和支持,比如针对不同场景优化服务元信息的存储和更新策略,或者提供更灵活的服务发现和通信机制...
JNDI 架构包括了核心组件,如端口(Port)、RMI 端口(RmiPort)、绑定地址(BindAddress)等,这些组件共同确保了服务的正常运行。 **JNDI 在 JBoss 中的配置** 在 JBoss 中使用 JNDI 需要配置一系列的属性,例如...
在J2EE架构中,程序通常依赖于特定的容器来提供服务,如EJB、JTA、JNDI、JMS等。然而,有时候J2SE应用程序也能从一些J2EE技术中受益,即使它们并不运行在完整的J2EE容器内。本文探讨了如何在J2SE应用程序中利用部分...
在客户端调用EJB之前,需要确保客户端能够正确地访问服务器端的JNDI命名服务。如果客户端和服务器位于不同的Java虚拟机上,则需要在客户端提供一个`jndi.properties`文件,该文件应包含如下信息: - `java.naming....
对于EJB客户端配置,当客户端与服务器不在同一Java虚拟机(JVM)上时,需要在客户端创建一个jndi.properties文件,指定JNDI命名服务的初始工厂和提供者URL。例如: ``` java.naming.factory.initial=org.jnp....
当客户端(如JSP、Servlet或独立应用)与服务器不在同一Java虚拟机上时,需要在客户端设置`jndi.properties`文件,指定JNDI命名服务的工厂和提供者URL,以及将其加入classpath。例如: ``` java.naming.factory....
- 配置 JNDI 数据源(例如 `java:/MSSQLDS`),确保与数据连接池配置中的 JNDI 名称一致。 2. **生成实体 Bean** - 使用 MyEclipse 自动生成实体 Bean 类,这通常涉及到根据数据库表结构自动生成对应的 Java 类...
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=tcp://localhost:1099 ``` 3. **测试与...
当客户端与服务器不在同一JVM时,需要在客户端创建一个`jndi.properties`文件,指定JNDI命名服务的初始工厂和提供者URL,并将其路径添加到classpath。例如: ``` java.naming.factory.initial=org.jnp.interfaces....
<br> 测试代码完成测试 <br> 报错:Cannot instantiate class: org.jnp.interfaces.NamingContextFactory <br> 添加 引用 <br>继续报错是因为JNDI访问名称错误,也是用了原来的那个了。哈哈。...
在JNDI中,这个端口用于查找和管理服务。 3. 配置文件结构 - DTD定义文件位于`$JBOSS_HOME/docs/dtd`,这些文件解释了XML配置文件中的元素和属性含义。 - 数据源配置文件位于`$JBOSS_HOME/server/default/deploy`...
<jndi-name>MySQLServer</jndi-name> <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_sp</connection-url> <driver-class>...
- 在对应的 `classes` 目录下创建 `jndi.properties` 文件。 - 编写以下配置: ``` java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099 java....
可以看到Global JNDI Namespace HelloWorldBean (class: org.jnp.interfaces.NamingContext) 4.编写客户端访问: Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org....
jBoss是一个开源的应用服务器,支持多种企业级应用服务,包括EJB(Enterprise JavaBeans)、JMS(Java Messaging Service)、JDBC(Java Database Connectivity)等。而EJB则是Java EE平台的一部分,主要用于开发...
C) 设置`InitialContext`的环境属性以指定JNDI服务的地址和实现,例如: ```java Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces....