设为首页 收藏本站
查看: 349|回复: 0

[经验分享] Tomcat 5.5 JNDI Resource 配置

[复制链接]

尚未签到

发表于 2017-1-29 12:26:03 | 显示全部楼层 |阅读模式
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2009/09/07/4528512.aspx
  Author Blog:http://blog.csdn.net/fenglibing
  该文是对Tomcat 5.5 JNDI Resource配置的翻译,文章中主要提到对<resource-ref>的配置操作,有我做一些取舍,原文的地址为:
  http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html
  一、简介
  在Tomcat 5 中,每个WEB应用程序的初使化环境(InitialContext)可以配置于$CATALINA_HOME/conf/server.xml的<Context>节点中,也可以配置每个WEB应用程序环境(Context)于单独的XML文件中,如将每个WEB应用的配置放于$CATALINA_HOME/conf/Catalina/localhost目录下,名称可以为任意。
  Tomcat 5为整个服务维护一个独立的全局资源命名空间,它们被配置于$CATALINA_HOME/conf/server.xml的<GlobalNameingResources>节点,你可以通过使用<ResourceLink>节点开放这些资源给WEB应用程序。
  这些定义的资源,可以被定义于你当前的WEB应用的WEB应用布署描述(/WEB-INF/web.xml)文件中的以下节点使用:
  l         <env-entry> :环境实体(Environment entry),一个单值参数(a single-value parameter)可以用于配置应用程序如何操作。
  l         <resource-ref>:资源引用(Resource reference),典型的应用为JDBC DataSource、JavaMail Session,或者配置于Tomcat5中的自定义对象工厂。
  l         <resource-env-ref>:资源环境引用(Resource environment reference),增加于Servlet 2.4中的resource-ref校验,这种可以简化资源配置,不需要授权信息。
  InitialContext在WEB应用程序初使化的时候就被配置了,并且可以被WEB应用程序访问(只读的方式),所有配置的实体及资源,都放于JNDI命名空间的"java:comp/env"区。因此一个典型的资源访问,这里指对JDBC DataSource的访问,就像下面这样:
  //Obtain our environment naming context
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  //Look up our data source
  DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");
  //Allocate and use a connection from the pool
  Connection conn = ds.getConnection();
  ... use this connection to access the database ...
  conn.close();
 
  二、配置JNDI资源
  每个可访问的JNDI资源配置于<Context>节点的如下节点:
  l         <Environment> - 为scalar environment实体配置名称及值,这些实体通过JNDI InitialContext开发给WEB应用程序(与在WEB应用布署描述文件(/WEB-INF/web.xml)中增加<env-entry>节点配置相同)。
  l         <Resource> - 配置应用于WEB应用程序的资源名称及数据类型(与在WEB应用布署描述文件(/WEB-INF/web.xml)中增加<resource-ref>节点配置相同)。
  l         <ResourceLink> - 为定义于全局JNDI环境中的资源增加链接,这些资源链访问定义于<Server>节点下的<GlobalNamingResources>的资源。
  l         <Transaction> - 为在java:comp/UserTransaction中有效的初使化UserTransaction对象实例增加资源工厂。
  三、TOMCAT标准资源工厂
  Tomcat 5 包括一系列的标准资源工厂,它们可以为你的WEB应用程序提供服务,并且配置灵活(配置于$CATALINA_HOME/conf/server.xml),不需要修改WEB应用程序及布署描述。
  注意:在标准资源工厂中,只有"JDBC Data Source"及"User Transaction"工厂可以移植到其它非TOMCAT平台,其它的标准资源工厂,包括你编写的自定义资源工厂,都只可以在TOMCAT下运行,不可以移植到其它的平台。
  JDBC数据源
  1、安装JDBC驱动
  将JDBC驱动放于目录$CATALINA_HOME/common/lib
  2、/WEB-INF/web.xml增加配置
  <resource-ref>
  <description>JDBC数据源配置实例</description>
  <res-ref-name>jdbc/TestDB</res-ref-name>
  <res-type>javax.sql.DataSource </res-type>
  <res-auth>Container</res-auth>
  </resource-ref>
 
  3、配置TOMCAT资源工厂
  <Context ...>
  ...
  <Resource name="jdbc/TestDB" auth="Container"
  type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory"
  username="dbusername" password="dbpassword"
  driverClassName="net.sourceforge.jtds.jdbc.Driver"
  url="jdbc:jtds:sqlserver://testServer:1433/DB"
  maxActive="8" maxIdle="4"/>
  ...
  </Context>
 
  相关属性说明:
  name:JDBC数据源的名称。
  auth:
  type:当前配置资源的类别。
  factory:数据源工厂,默认为"org.apache.commons.dbcp.BasicDataSourceFactory"。
  driverClassName - 驱动的全路径类名。
  maxActive - 当前数据源支持的最大并发数。
  maxIdle - 连接池中保留最大数目的闲置连接数。
  maxWait - 当连接池中无连接时的最大等待毫秒数,在等当前设置时间过后还无连接则抛出异常。
  username - 访问数据库的用户名
  password - 访问数据库的密码
  url - JDBC驱动的连接字符串
  validationQuery - 在返回应用之前,用于校验当前连接是否有效的SQL语句,如果指定了,当前查询语句至少要返回一条记录。
  4、实例JAVA程序
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  DataSource ds = (DataSource)
  envCtx.lookup("jdbc/TestDB");
  Connection conn = ds.getConnection();
  ... use this connection to access the database ...
  conn.close();
 
  JavaMail Session
  Tomcat 5 包括一个标准的、用于创建javax.mail.Session session实例的资源工厂,该工厂将会自动连接配置于server.xml中的SMTP服务器。在这种情况下,具体的应用完全不用去管email服务的配置环境,只需要在需要的时候,做简单的请求、获取预配置的session。
  1、安装JAR包
  点击这里下载JavaMail的JAR包,JavaMail依赖于Java Activation Framework,因而也需要下载。
  2、在web.xml配置
  <resource-ref>
  <description>JavaMail配置</description>
  <res-ref-name>mail/Session</res-ref-name>
  <res-type>javax.mail.Session</res-type>
  <res-auth>Container</res-auth>
  </resource-ref>
 
  3、配置$CATALINA_HOME/conf/server.xml
  <Context ...>
  ...
  <Resource name="mail/Session" auth="Container"
  type="javax.mail.Session"
  mail.smtp.host="localhost"/>
  ...
  </Context>
 
  注:默认的邮件服务端口为25,如果不是,则需要修改mail.smtp.host属性为指定的主机,如mail.smtp.host="localhost:26"。
  4、JAVA示例程序
  ......
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  Session session = (Session) envCtx.lookup("mail/Session");
  Message message = new MimeMessage(session);
  message.setFrom(new InternetAddress(request.getParameter("from"));
  InternetAddress to[] = new InternetAddress[1];
  to[0] = new InternetAddress(request.getParameter("to"));
  message.setRecipients(Message.RecipientType.TO, to);
  message.setSubject(request.getParameter("subject"));
  message.setContent(request.getParameter("content"), "text/plain");
  Transport.send(message);
  ......
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-334910-1-1.html 上篇帖子: tomcat中的server.xml元素详解 【Z】 下篇帖子: red5内嵌tomcat启用apr和gzip
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表