- 浏览: 489050 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (139)
- JAVA (20)
- Database (11)
- Flex (2)
- OXM (1)
- Oracle (17)
- Persistence (2)
- IDE (5)
- Software Development (12)
- Operation System (22)
- Spring (1)
- Computer (3)
- WEB Server (6)
- Industry Applications (11)
- Project Management (1)
- Web Service (1)
- Linux (9)
- HTML (2)
- Crypto (1)
- Lucene (3)
- Hadoop (10)
- Java Script (2)
- Search (7)
- Python (1)
最新评论
-
bcabchappy:
win7下面无效:当前盘符:%~d0原样输出了
CMD获取当前目录的绝对路径 -
gpo:
很好
struts2文件上传如何限制上传文件类型(类型列表) -
zl0828:
很好的东西,顶你,分享
CMD获取当前目录的绝对路径
貌似有段时间没来这里忽悠了,今天抽空接着忽悠下这三个服务器配置JNDI时的一些异同点并提点自己的建议。
- Jboss 4
Jboss中配置JNDI最常见的就是在配置数据源的时候,在server/default/deploy目录下方一个xxx-ds.xml文件,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <datasources>
- <local-tx-datasource>
- <jndi-name>jdbc/DataSource</jndi-name>
- <connection-url>jdbc:jtds:sqlserver://localhost:1433/fnx</connection-url>
- <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
- <user-name>sa</user-name>
- <password>1234</password>
- <metadata>
- <type-mapping>MS SQLSERVER2000</type-mapping>
- </metadata>
- </local-tx-datasource>
- </datasources>
这样我们启动服务器后,在web应用中就可以通过如下代码就可以直接访问到数据源:
- Context ctx = new InitialContext();
- Object o=ctx.lookup("java:jdbc/DataSource");
然而这里的java:jdbc/DataSource是一个全局资源名称,Jboss自动将资源加入全局资源,我们经常在应用中看到的java:comp/env/jdbc/DataSource 又是怎么回事?这其实是应用
的私有环境引用名,如果要使用这个引用名称,需要做两件事情(必须做),1、在应用的WEB-INF目录下创建jboss-web.xml,并设置全局到局部引用名得映射
- <jboss-web>
- <resource-ref>
- <res-ref-name>jdbc/DataSource</res-ref-name>
- <res-type>javax.sql.DataSource</res-type>
- <jndi-name>java:/jdbc/DataSource</jndi-name>
- </resource-ref>
- <context-root>/</context-root>
- </jboss-web>
2、在web.xml中设置
- <web-app>
- <display-name>Archetype Created Web Application</display-name>
- <resource-ref>
- <description>dataSource</description>
- <res-ref-name>jdbc/DataSource</res-ref-name>
- <res-type>javax.sql.DataSource </res-type>
- <res-auth>Container</res-auth>
- </resource-ref>
- </web-app>
这样就可以在web应用中使用 java:comp/env/jdbc/DataSource 私有名了。
- Tomcat 6
tomcat中配置JNDI有三个地方:
1、在服务器的Server元素下配置全局的JNDI<GlobalNamingResources>
2、在host元素的<DefaultContext>中配置,配置后对该host下所有的context应用都有效
3、在context元素下配置,这里配置的只对该应用有效。
需要注意的是,第一种方式配置的全局JNDI,需要在context中使用<ResourceLink>元素转换成局部名才可以使用,功能跟jboss-web.xml中的转换类似。另外,tomcat 中配置的资源不需要在web.xml中进行声明,也可以通过java:comp/env形式进行访问,这一点跟Jboss/jetty有区别。
上面三个地方可以配置的资源元素是Resource/Environment,ResourceParams是配合Resource使用,而ResourceLink是为了连接转换全局资源。
举个简单例子,在context元素下的配置:(其他的各位自己去看元素如何使用)
- <Resource name="mybase" auth="Container"
- type="org.apache.catalina.UserDatabase"
- description="User database that can be updated and saved"
- factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
- pathname="conf/tomcat-users.xml" />
这样就可以直接在web中使用 java:comp/env/mybase 来查询到资源了。不过还是建议在web.xml中声明一下。
- Jetty 7
Jetty的JNDI配置也分3个范围
1、基于JVM全局的,也就是同一个JVM下不同的Server都可以访问
2、基于Server的,只能在该server下可以访问
3、基于应用context上下文的,只能在该context下能够访问
配置方式见我上面一篇《JNDI和在JETTY中的运用》
不过这里要注意的是,采用java:comp/env方式访问时,一定要在web.xml中声明资源(除了配置的EnvEntry元素除外,他自动会加入到私有资源),否则你是拿不到资源的。
- 总结
可以看到,每个服务器都有他自己的JNDI配置方式和全局访问方式,如果我们直接采用全局访问方式,第一对于一些只对某些应用有关的资源配置可能访问不到,例如JETTY,第二每个
应用服务器的全局访问方式可能不太一致。因此一般建议在应用程序中采用私有方式(java:comp/env)访问资源,并且无论如何都在web.xml中进行申明。这是一个良好的习惯。
另外:说到私有环境ENC(java:comp/env),他是如何变成私有的?其实私有是对每个应用上下文来说的,一般每个应用上下文都会用自己的classloader来加载应用,因此利用classloader便可以完成。具体方式是: 用每个应用自己的上下文 cloassloader 来初始化一个JNDI context . 并以 classoader 为 key 保存起来,以后应用检索时需要使用的应用自己上下文的 classloader来查找这个JNDI 资源即可 ,由于其他应用使用不同的classloader实例,也就不能相互共享了,这就是每个应用私有了。另外如果资源命名时采用:java:resourceName, 或者 prefix:resourceName 的方式,虽然我们可以通过 java:resourceName, 或者 prefix:resourceName 的方式直接访问,但也注定了这不是私有资源,所有应用都可以访问,需要放到 ENC 下才是私有资源。绑定在 ENC 下访问:java:comp/env/prefix:resourceName
本文转自:http://blog.csdn.net/lovingprince/article/details/6577920
发表评论
-
Eclipse中集成Tomcat
2016-07-11 21:46 463问题: 很多时候在Eclipse中启动Tmocat后,不能 ... -
DOS运行Java命令的同时添加依赖jar包及参数
2015-08-03 18:58 579方案一: java -classpath %classpat ... -
用myeclipse打jar包,使其包含依赖jar包的指向
2015-08-03 14:21 1974第一步:建目录,将依赖JAR包都拷贝到该目录下,比如我的这个 ... -
IBATIS Error getting ordinal list from JavaBean的特殊问题
2015-01-24 23:12 2202iBatis作为持久层的组件,为广大开发人员提供了极 ... -
GC 日志解读/分析
2014-07-15 18:10 970打印gc log的详细信息 Java代码 ... -
Tomcat下配置BoneCP连接池
2013-10-21 20:10 1396公司的内部服务器,一直是采用的tomcat,连接池也是采用的 ... -
Tomcat把JDBC驱动强行注销的问题
2013-01-26 02:50 2181异常:A web application regist ... -
JVM垃圾收集相关常用参数
2012-12-03 10:49 1768参 数 描 ... -
Memory Analyzer Tool(MAT) 使用基础
2012-11-22 16:17 1285MAT 使用初探 今天线上一个应用的持久区满了,一直没 ... -
Tomcat中URIEncoding的使用
2012-08-10 14:51 1812tomcat5中,为了保证get数据采用UTF8编码,在 ... -
Maven 简要
2012-03-24 14:20 10051.前言 Maven,发音是[ ... -
使用Jacob操作Office 配置及结构简介
2012-03-10 22:11 78091、介绍 Jacob 是Java-COM ... -
Velocity语法
2012-01-20 16:34 8326Velocity语法 1. 变量 (1)变量 ... -
7个改变世界的Java项目
2011-10-21 09:22 1585Java的开源生态系统是强大而健康的,这是我们(Oreill ... -
Java 开发之小经验
2011-04-17 11:42 904本文是鄙人从发布日期开始收集的一些开发上的小经验。不足之处 ... -
Jakarta Commons Digester 学习笔记
2011-04-11 23:58 1568摘要:Jakarta Commons Digester ... -
iBatis简记
2011-01-26 15:26 1239<isEqual> 如果参数相等于值则查询条 ... -
Linux下Java程序中文乱码问题研究
2011-01-07 15:00 3102Linux下Java程序中文乱码问题研究 贾金营1 ,贾金 ... -
log4j重复输出log信息原因和解决办法
2010-11-16 09:10 3167log4j的logger(旧版本称logger)是层次结构的, ...
相关推荐
Apache Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿) Apache Jboss/Tomcat集群(手稿)
Servlet引擎:JBoss与Tomcat、Jetty协同工作
Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于...
NULL 博文链接:https://lym6520.iteye.com/blog/310725
apache 集成 jboss 或者 tomcat 必须文件,window下专用
jboss配置MySql的JNDI
JBOSS+TOMCAT集成开发环境。完整版
JBoss+Tomcat已经成为一个免费的开源的稳定的J2EE服务器,虽然在JBoss中部署J2EE没有商用J2EE服务器那么方便,基本都是通过手工编写XML配置文件,但是这样可以让我们更容易理解J2EE的来龙去脉。本文以Jboss 2为例,...
NULL 博文链接:https://lindows.iteye.com/blog/234603
JPA/JBOSS/EJB基础教程PDF资料
jBoss+tomcat学习笔记大全,jBoss+tomcat的帮助文档
JBOSS\Tomcat最大连接数配置和jvm内存配置,解决内存溢出问题 Java中OutOfMemoryError(内存溢出)的情况 第一种OutOfMemoryError: PermGen space 第二种OutOfMemoryError: Java heap space
Jboss与Tomcat服务器的SSL配置Jboss与Tomcat服务器的SSL配置
公司需要做 Apache Tomcat集群,研究了数日,终配置成功,把研究结果共享一下。 最下面的红色字体[在一台机器上启动两个JBoss服务器],不同机器端口和路径不同,可根据自己情况适当修改。
web工程从TOMCAT移植到JBOSS中
jboss-web.xml jndi.properties oracle-ds.xml三个文件,EJB+JPA 所需要的一些配置文件
jboss4版本下,jbossweb-tomcat55.sar升级包,修复Apache Tomcat DIGEST身份验证多个安全漏洞(CVE-2012-3439) 升级包中的jar来源于tomcat5.5.36 使用方法:直接替换jboss中旧的jbossweb-tomcat55.sar
http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA-jdk6.zip/download 3.配置JBOSS环境变量 JBOSS_HOME=D:\jboss-5.1.0.GA 然后在path中添加 ;%JBOSS_HOME%\bin; 4.测试安装...
DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> <jboss-web> <!-- For load class independently --> ...