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果然不是为了做小项目来的。
分享到:
相关推荐
was应用服务器部署、调优、JNDI配置、应用平台部署;IHS部署
NULL 博文链接:https://buliedian.iteye.com/blog/858026
简单我tomcat5.0中的JNDI应用
在JBOSS 环境中配置JMS,在程序中可以通过JNDI 获取连接,如消息启动Bean 就可以通过JNDI获取:@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue ...
JNDI 命名和目录服务 JAVA 命名和目录接口
在JAVA编程中对JNDI的支持.是一个开放的源码.
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
Jboss 项目部署文档是指在 Jboss 服务器上部署项目的详细步骤,包括环境变量的配置、项目打包、配置文件的修改、JNDI 的配置等。以下是 Jboss 项目部署文档的详细知识点: 一、环境变量配置 在部署 Jboss 项目之前...
tomcat配置jndi几个方式
JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试项目JNDI测试...
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...
配置了tomcat之后发现jndi好简单啊,可是碰到了hibernate该怎么做呢,本例详细解析
jndi入门学习资料,介绍jndi基本原理,安装和使用,基本配置
WebSphere配置JNDI方法(以配置Oracle数据库为例)【附图】
JDBC,JNDI和servlet小例子
java asm jndi_JNDI-Injection-Exploit,用于log4j2漏洞验证 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] 其中: -C ...
j2ee JNDI 存储 和 读取程序 weblogic
什么是JNDI,JNDI到底有什么作用!
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...
WebLogic v9.2 EJB和JNDI Demo