`
a3mao
  • 浏览: 562974 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用JNDI时的小问题

    博客分类:
  • Work
阅读更多
已经有一段时间没有写文章了,最近实在是太忙了,本周连续奋战了2个通宵,其他时间几乎都是在后半夜才能回家。这样的状态真的不知道能在坚持多久,已经有些疲惫了,想跳槽了,正在积极准备中。。。。
      言归正传,项目中app server使用的weblogic9.2 MP3,数据库使用sybase15.因为必须使用weblogic的数据库连接池(客户要求),不能在使用别的连接池。没有办法,客户就是上帝啊。
      获取weblogic连接池里的数据库连接,需要从weblogic的上下文环境中获取到weblogic的数据源DataSource,根据weblogic数据源就可以取到数据库连接。代码如下:
      Context ctx = new InitialContext();//因为是在本机使用,故不必设置url
      javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup(jndiName);
      Connection con = ds.getConnection();
如果我们的应用里只有一个,而且也没有别的地方能用到weblogic的上下文环境,那么上面这段代码就没有问题,一切OK。但问题是如果我们的应用比较复杂,比如:我们要从app server1上取得数据,然后通过JMS发送报文到app server2 当然这两个server是分开的。那么我们在用上面代码去取得数据库连接就会出现问题。因为我们通过JMS发送报文时要穿就远程server的上下文环境,会指定远程server及app server2的url 用户 密码等参数,当我们在创建本地server 及app server1的上下文环境时,就会出现weblogic用户验证的错误。因为我们在创建本地server的上下文环境时,没有指定用户,密码,不知道是不是weblogic的bug,它会使用app server2的用户跟密码。所以我们在创建server的上下文环境时,最好是指定用户跟密码。
      还有一个问题,就是我们不能缓存已经创建好的javax.sql.DataSource对象,即:

     javax.sql.DataSource ds = (DataSource)s_dataSourceMap.get(s_dataSource_Key);
     if(ds==null)
     {
          Context ctx = new InitialContext();//因为是在本机使用,故不必设置url
          ds = (javax.sql.DataSource)ctx.lookup(jndiName);
          dataSourceMap.put(s_dataSource_Key,ds);
      }
如果改成上面这段代码,则同样也会报错,不太清楚是为什么,而ds的确是已经存在了的。
    
分享到:
评论

相关推荐

    java jndi的使用

    Java JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和...在实际项目中,这通常涉及配置服务器以提供JNDI服务,编写代码来查找和使用这些服务,并确保所有必要的驱动库都已包含在运行时环境中。

    jndi-tool JNDI服务利用工具

    **正文** JNDI(Java Naming and Directory Interface)是Java平台提供的一种标准接口,用于访问命名和目录服务。它允许程序查找和操作存储在...在使用时,确保遵守合法和道德的测试原则,以避免不必要的法律问题。

    intellij idea使用tomcat开发时自动部署jndi数据源

    在这个场景中,“intellij idea使用tomcat开发时自动部署jndi数据源”是一个重要的知识点,它涉及到如何在IDE中配置和管理数据库连接,以便于在应用运行时动态地查找和使用数据源。 JNDI(Java Naming and ...

    jndi-1_2_1.zip_jndi_jndi-1.2.1.jar

    描述中的“在JAVA编程中对JNDI的支持”意味着这个软件包是为了帮助Java开发者使用JNDI进行开发,而“是一个开放的源码”则说明了这个实现是开源的,允许用户查看和修改源代码,促进了社区的协作和改进。 标签“jndi...

    jndi测试小项目,初学者

    这个小项目是针对初学者设计的,旨在帮助他们理解JNDI的基本概念和用法。 在Java应用中,JNDI主要用来查找和绑定资源,如数据库连接池、邮件服务器配置、EJB对象等。它通过名字服务(Naming Service)和目录服务...

    用jndi操作数据库小实例

    在使用数据源时,通常会自动管理这些关闭操作。 8. **事务管理**:数据源通常支持事务管理,可以使用Connection的setAutoCommit()和commit()或rollback()方法控制事务的开始、提交和回滚。 通过这个小实例,开发者...

    JNDI使用

    6. **处理异常**:在使用JNDI时,需要捕获并处理可能的异常,如`NamingException`。 ### 3. JNDI在实际应用中的例子 - **JDBC数据源**:在应用服务器中,通常会配置JDBC数据源,应用程序可以通过JNDI查找数据源,...

    Jndi使用方法

    【JNDI 使用方法】 Java 命名和目录接口(JNDI)是Java应用程序访问命名和目录服务的关键工具。命名服务的核心功能是通过名称将对象与它们的标识关联,便于用户通过名称而非直接引用访问对象。目录服务则在此基础上...

    Tomcat中JNDI原理

    在Tomcat服务器中,JNDI的应用主要体现在其内置的JNDI实现——Tomcat JNDI,它允许开发者在应用中通过名称查找和使用资源,如数据源、环境变量等。本文将深入解析Tomcat 5.0中JNDI的工作原理,特别是`ContextBinding...

    jboss配置MySql的JNDI

    - **是否使用Java上下文**:`false`,表示不使用。 - **用户名和密码**:分别为`vnetoo61`和`vnetoo61`,用于数据库认证。 - **异常分类器类名**:`org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter`,...

    JDBC,JNDI和servlet小例子

    使用JNDI的一般流程包括:初始化Naming或InitialContext对象、执行lookup操作查找资源、使用找到的资源进行业务操作。 Servlet是Java Web应用程序的核心组件,它是运行在服务器端的Java小程序,负责处理HTTP请求并...

    Jndi的使用简介

    简要描述项目中Jndi的使用过程,完成servlet通过池连接的方式访问数据库

    用JNDI绑定DataSource

    在Java应用中,JNDI(Java Naming and Directory Interface)是一种标准的接口,它允许应用程序查找和使用资源,如数据源(DataSource),而无需直接在代码中硬编码这些资源的位置或配置信息。JNDI的核心理念是将...

    JNDI示例整合SSH

    在整合JNDI时,我们可以在Hibernate的配置文件(hibernate.cfg.xml)中指定数据源的JNDI名称,使Hibernate能够通过JNDI查找数据库连接。 **整合步骤:** 1. 配置应用服务器的JNDI资源,如在Tomcat的`context.xml`...

    JNDIDemo 以及相关文档

    9. **JNDIDemo**:提供的`JNDIDemo`可能是一个示例程序,展示了如何使用JNDI进行查找、绑定等操作。通过查看源代码和运行示例,可以深入理解JNDI的工作原理。 10. **学习资料**:提供的文档,如`java的JNDI 技术...

    jndi 反射 耦合

    然而,不当使用JNDI可能导致安全问题,比如著名的Log4Shell漏洞就与JNDI注入攻击有关,因此在使用JNDI时应谨慎处理用户输入,防止恶意利用。 其次,反射在Java编程中是一种强大的工具,它允许程序在运行时检查类、...

    jndi所依赖的jar包

    Java Naming and Directory Interface (JNDI) 是Java平台中...总之,JNDI及其依赖的JAR包是Java开发中不可或缺的部分,尤其是在构建分布式和企业级应用时,理解和掌握JNDI的使用能极大地提高应用的可扩展性和灵活性。

Global site tag (gtag.js) - Google Analytics