`
Anatorian
  • 浏览: 62185 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JNDI中的组件私有环境,公共环境和部署时映射

    博客分类:
  • java
阅读更多

j2ee难用,其中一个原因是jndi不好用,明明已经配置好名字为dataSource的数据源,但是在部署JPA时,老是抛异常说找不到数据源。今天在用jboss时,终于又明白了一些。

原来j2ee中的组件是有它自己独自的环境的,位于java:/comp/env这个jndi目录下。每个组件不能访问另外一个组件的私有环境,实现组件各自独立。同时,又有一些jndi目录和名字是公共的,如java:/下的其它一些名字,还有一些是只能给本地访问的,还有一些是能够给远程访问的,这个就不说了。

如果一个组件想要获得另外一个组件,那么需要在它的部署描述符里说明,比如:

<resource-ref>
  <description>Dollys DataSource</description>
  <res-ref-name>jdbc/mydatasource</res-ref-name>
  <res-ref-type>javax.sql.DataSource</res-ref-type>
  <res-auth>Container</res-auth>
</resource-ref>

这里说这个组件需要依赖于一个叫java:/comp/env/jdbc/mydatasource的数据源。但是这个数据源又从哪里来呢??!!注意了!原来是要在部署时写另外一个特定于服务器种类的数据源映射文件,如下面的jboss示例:

<resource-ref>
   <res-ref-name>jdbc/mydatasource</res-ref-name>
   <jndi-name>java:DefaultDS</jndi-name>
</resource-ref>

上面这一段可能位于jboss-web.xml等jboss特定的部署描述符里。目的就是告诉jboss,把全局的java:DefaultDS映射到这个组件的java:/comp/env/jdbc/mydatasource。就是这一步,很时候之所以部署失败,找不到jndi都是因为少了这样一个映射导致的。

如果不想写上面的特定于服务器的部署描述符,我估计可以通过指定一个公共的jndi来解决,如下:

<resource-ref>
  <description>Dollys DataSource</description>
  <res-ref-name>java:DefaultDS</res-ref-name>
  <res-ref-type>javax.sql.DataSource</res-ref-type>
  <res-auth>Container</res-auth>
</resource-ref>

问题虽然解决了,可是突然觉得好恶心,搞得这么复杂有必要吗?!!j2ee果然不是为了做小项目来的。

分享到:
评论

相关推荐

    JAVAEE期末复习参考题.pdf

    Java Bean是一种符合特定规范的Java类,通常是可序列化的,并且具有默认的无参构造器、私有属性和公共的getter/setter方法。Enterprise Bean指的是EJB(Enterprise JavaBean),它是Java EE中的企业级组件模型,用于...

    java面试题

    在实际的Web服务器环境中,如Tomcat、Jetty等,Java应用需要部署到特定的容器中运行。而在J2EE框架下,比如WebSphere、WebLogic,它们提供了更全面的服务支持,如EJB容器、JMS服务、JNDI(Java Naming and Directory...

    j2ee面试题2011-3收集.docx

    - JNDI(Java Naming and Directory Interface):提供了一种在分布式环境中查找和绑定对象的命名服务,如查找数据库连接、EJB等。 - JMS(Java Message Service):支持点对点和发布/订阅消息传递模式,实现异步...

    JAVA程序员面试题6

    3. **产品模式下的配置**:在产品环境中,需要从可信的证书颁发机构(CA)获取私有密钥和数字证书,然后创建`identity`和`trust` KeyStore,并将这些密钥和证书加载进去。 4. **配置双向认证**:可以进一步配置SSL...

    超级有影响力霸气的Java面试题大全文档

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    Hibernate 3.x 参考手册

    通过以上详细分析,可以清晰地了解到 Hibernate 3.x 版本中关于快速启动、基础介绍、架构设计、配置管理、持久化类定义以及基本 ORM 映射的核心知识点。这些内容对于初学者理解和掌握 Hibernate 的基本用法至关重要...

    FitnessCenter:使用getset属性进行EJB实践

    在Java企业版(Enterprise JavaBeans,简称EJB)中,get和set方法是面向对象编程中的常见实践,特别是在处理实体Bean(Entity Bean)时。实体Bean通常代表数据库中的记录,并且需要提供方法来访问和修改其内部状态。...

Global site tag (gtag.js) - Google Analytics