`
精神分裂
  • 浏览: 29350 次
  • 性别: Icon_minigender_1
  • 来自: 二次元世界
社区版块
存档分类
最新评论

JNDI环境访问及JNDI默认名称

    博客分类:
  • EJB
阅读更多
设置JNDI访问环境信息
在进行JNDI查找前,我们必须设置应用服务器的上下文信息,主要是设置:
1. JNDI驱动的类名(java.naming.factory.initial)
java.naming.factory.initial或Context.INITIAL_CONTEXT_FACTORY:环境属性名,用于指定InitialContext工厂(作者称它为JNDI驱动更容易理解),它类似于JDBC指定数据库驱动类。因为本例子连接的是JbossNS(命名服务的实现者),所以使用Jboss提供的驱动类:org.jnp.interfaces.NamingContextFactory

2. 命名服务提供者的URL(java.naming.provider.url)。
java.naming.provider.url或Context.PROVIDER_URL:环境属性名,包含提供命名服务的主机地址和端口号。它类似于JDBC指定数据库的连接URL。连接到JbossNS的URL格式为:jnp://host:port,该URL的“jnp:”部分是指使用的协议,JBoss使用的是基于Socket/RMI的协议。host为主机的地址,port为JNDI服务的端口。除了host之外,其他部分都是可以不写的。

下面是数据库访问例子:
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Properties props = new Properties();
props.put("user","root");
props.put("password","123456");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/itcast", props);

如同数据库一样,根据访问命名服务器的不同,为上下文设置的驱动类和URL也是不同的,如下面是访问Sun应用服务器的上下文信息:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.provider.url", "localhost:3700");
InitialContext = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("com.foshanshop.ejb3.HelloWorld");

如果客户端运行在应用服务器内,我们不需要为InitialContext设置应用服务器的上下文信息,也不建议设置。因为应用服务器启动时会把JNDI驱动类等上下文信息添加进系统属性,创建InitialContext对象时如果没有指定Properties参数,InitialContext内部会调用System.getProperty()方法从系统属性里获取必要的上下文信息。对EJBClient例子而言,你可以省略传入props参数,之所以给InitialContext设置参数,目的是引出相关知识点,在实际应用中,如果给InitialContext设置了参数,反而会带来不可移植的问题。

注:创建InitialContext对象时如果没有指定Properties参数,InitialContext还会在classpath下寻找jndi.properties文件,并从该文件中加载应用服务器的上下文信息。这样避免了硬编码为InitialContext设置Properties参数。
jndi.properties的配置如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces


JBoss默认生成的JNDI名称
当EJB发布到Jboss 时,如果我们没有为它指定全局JNDI名称或修改过其默认EJB名称,Jboss就会按照默认的命名规则为EJB生成全局JNDI名称,默认的命名规则如下:
如果把EJB作为模块打包进后缀为*.ear的JAVA EE企业应用文件,默认的全局JNDI名称是:
本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote

EAR-FILE-BASE-NAME为ear文件的名称,EJB-CLASS-NAME为EJB的非限定类名。
例:把HelloWorld应用作为EJB模块打包进名为HelloWorld.ear的企业应用文件,它的远程接口的JNDI 名称是:HelloWorld/HelloWorldBean/remote
如果把EJB应用打包成后缀为*.jar的模块文件,默认的全局JNDI名称是:
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
例:把HelloWorld应用打包成HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote
分享到:
评论

相关推荐

    Tomcat中JNDI原理

    这段代码中,`InitialContext`是JNDI的标准入口点,`java:comp/env`是默认的上下文名称,而`jdbc/myDataSource`是具体资源的名称。通过这样的机制,`myApp`可以透明地访问其所需的数据源,而无需关心具体的实现细节...

    04_JNDI.pdf

    - **EJB Home Stub及EJB环境变量**:在EJB(Enterprise JavaBeans)环境中,JNDI用来查找EJB的Home接口,以及EJB实例的环境配置信息。 - **JDBC DataSource**:用于查找和管理数据库连接资源。 - **JMS Connection ...

    weblogic下配置JNDI数据源

    WebLogic 是一款功能强大的 Java 应用服务器,提供了强大的集成和管理功能,而 JNDI(Java Naming and Directory Interface)是 Java 中的一种命名和目录接口,用于在 Java 应用程序中访问各种资源,例如数据库、...

    Tomcat JNDI配置

    在配置 Tomcat JNDI 时,可能会遇到一些常见的问题,例如数据源无法连接、JNDI 名称不正确等。解决这些问题的方法包括: * 检查数据源 URL 是否正确 * 检查 JNDI 名称是否正确 * 检查 JDBC 驱动类是否正确 * 检查...

    初学jndi笔记

    **JNDI**(Java Naming and Directory Interface)是Java平台的一部分,用于开发与名称和服务目录进行交互的应用程序。它允许Java应用程序查找并使用远程对象和服务。在J2EE环境中,JNDI提供了一种标准化的方式来...

    常见数据库jndi 配置文件

    而Java命名与目录接口(Java Naming and Directory Interface, JNDI)是一种广泛使用的API,用于访问命名和目录服务。通过JNDI,应用程序可以获取到数据库连接池中的连接,实现数据库访问。本文将详细介绍几种常见的...

    Jetty嵌入式服务器的JNDI快速配置指南

    JNDI(Java Naming and Directory Interface)是Java平台中的一个标准接口,用于访问命名和目录服务。在Jetty中,我们可以利用JNDI来管理资源,如数据源、邮件会话等,以便在Web应用中进行共享。 1. **JNDI的基本...

    Spring的数据源配置 DBCP、C3P0、JNDI.txt

    **定义JNDI数据源**:在应用服务器中配置数据源,并通过一个JNDI名称来标识该数据源。 2. **在Spring中配置JNDI Lookup**:使用`JndiObjectFactoryBean`来查找JNDI数据源,并将其注入到Spring Bean中。 #### 五、...

    Webshpere配置JNDI数据源[归纳].pdf

    此外,如果Oracle JDBC驱动未包含在WebSphere默认的类路径中,需要手动复制`ojdbc14.jar`(或对应版本的JDBC驱动)到`$WAS/lib`目录下,确保WebSphere能够找到并加载驱动。 最后,完成所有配置后,不要忘记测试数据...

    JSP单元测试题JNDI JAVA Naming and Directory interface

    通过JNDI,开发者可以方便地查找、绑定和管理分布式环境中的资源,如数据源、EJB、邮件服务器等。它使得应用与特定的命名或目录服务解耦,提高了应用程序的可移植性。 JSP(JavaServer Pages)是一种动态网页技术,...

    weblogic数据源配置与使用方法[参照].pdf

    因此,JNDI名称必须在整个应用环境中保持一致,以便于应用正确引用。 3. **测试数据源连接**: - 创建一个简单的Web项目,并在Java代码中使用JNDI查找机制获取数据源。 - 例如,通过`InitialContext`实例化一个上...

    rmi-jndi-ldap-jrmp-jmx-jms:rmi,jndi,ldap,jrmp,jmx,jms一些演示测试

    在Java应用中,JNDI经常用来访问和操作LDAP目录服务。通过JNDI,开发者可以搜索、添加、删除和修改目录中的条目。 4. JRMP:JRMP是Java的默认远程方法调用协议,主要用于JVM间的通信。RMI系统使用JRMP来实现客户端...

    WAS创建JDBC及数据源.

    在“数据源名”指定名称或者按默认,在”JNDI 名称“中填写正确定的 jndi 名称。然后,根据提示填写数据库的 url。 三、创建 J2C 认证 创建 J2C 认证是为了提供对数据库的身份验证。点击刚创建的数据源“Oracle ...

    websphere8.5配置数据源

    在WebSphere 8.5中,配置JNDI数据源是为了将数据库连接封装成Java对象,应用程序通过JNDI名称来引用。 #### 1. JDBC提供程序配置 - **JDBC提供程序创建**:在WebSphere管理控制台中,通过“资源” -> “JDBC” -> ...

    CSM开发环境搭建过程

    - JNDI名称:CSM_Data_Source #### 四、Eclipse与Weblogic集成 - **集成Weblogic**: - 在Eclipse中配置Weblogic服务器,确保可以成功部署应用。 - **配置VSS**: - 使用VSS工具管理项目源代码,包括src、lib...

    Jsp+tomcat+mysql环境配置

    在“Resources”-“Data sources”下创建新的数据源,填写JNDI名称(如jdbc/BookDB)、数据源URL(jdbc:mysql://127.0.0.1/BookDB)、JDBC驱动类(通常为com.mysql.jdbc.Driver)等信息。 完成上述步骤后,你就成功...

Global site tag (gtag.js) - Google Analytics