(转)WebSphere的web工程中怎么获取数据源

原文:http://aguu125.iteye.com/blog/1694313 

 https://blog.csdn.net/bigtree_3721/article/details/44900325-------JNDI之java:comp/env

was配置数据源和tomcat是不同的。tomcat只需要配置tomcat 的service.xml或者content.xml,然后 WEB程序就不需要配置了。但是was不同.was 除了在控制台配置数据源后,还需要在web.xml 和WEB-IBN.XML中配置

 

websphere 下获取jndi,有两种方式:java:comp/env/cas与jdbc/cas。 A.lookup("java:comp/env/cas")与lockup("jdbc/cas")在websphere中都可以使用。两者的差别在于,java:comp/env/cas是websphere建议使用的方式 。

    如果你当前的线程属于websphere的线程,建议使用java:comp/env/cas的方式,否则was的控制台将报出警告。 
    在web程序中,要实现通过java:comp/env/cas的方式来获得jndi必须在web.xm和ibm-web-bnd.xmi文件里分别添加 

 web.xml: 

 

  1. <resource-ref id="ResourceRef_1129470735234">
  2. <res-ref-name>cas_ase</res-ref-name>
  3. <res-type>java.sql.DataSource</res-type>
  4. <res-auth>Container</res-auth>
  5. <res-sharing-scope>Shareable</res-sharing-scope>
  6. </resource-ref>


ibm-web-bnd.xmi: 

 

 

  1. <resRefBindings xmi:id="ResourceRefBinding_1129470735234"
  2. jndiName="jdbc/cas_ase">
  3. <bindingResourceRef href="WEB-INF/web.xml#ResourceRef_1129470735234" />
  4. </resRefBindings>


 以上两段配置的意思是告诉web容器的上下文环境,将应用映射到的jndi资源。然后就可以通过lookup(“java:comp/env/cas/jdbc/cas_ase”)名来获得数据源。 
     然而,如果你当前执行的线程不在was的容器内,比如说你通过web容器的线程新起了一个子线程,那么该线程将不在容器的上下文内,通过lookup(“java:comp/env/cas/jdbc/cas_ase”)名来获得数据源 
     将报错,这个时候你只能使用通用的获取jndi资源的方式,就是通过lookup(“jdbc/cas”)来实现。“jdbc/cas”为你在was的资源设定的jndi名

 

 

java代码: 

 

  1. package com;
  2. import java.sql.Connection;
  3. import java.util.Hashtable;
  4. import javax.naming.Context;
  5. import javax.naming.InitialContext;
  6. import javax.naming.NamingException;
  7. import javax.sql.DataSource;
  8. public class conn {
  9. public static void main(String[] args) throws Exception {
  10. InitialContext initialContext = getInitialContext();
  11. javax.sql.DataSource ds = (DataSource) initialContext.lookup("jdbc/cas_ase");
  12. Connection cn = ds.getConnection();
  13. if (cn != null){
  14. System.out.println("Connection ok");
  15. }
  16. }
  17. /* 因为此类不在Websphere服务器内部运行,所以需要配置环境变量,否则是可以省略的 */
  18. public static InitialContext getInitialContext() throws NamingException {
  19. Hashtable env = new Hashtable();
  20. env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
  21. env.put(Context.PROVIDER_URL, "iiop://localhost:2809"); // iiop是协议
  22. InitialContext context = new InitialContext(env);
  23. return context;
  24. }
  25. }


关于JNDI可以看:http://blog.csdn.net/lan861698789/article/details/26402935 

 

 

关于web.xml中参数的解释:

 

 resource-ref元素用于指定对外部资源的servlet引用的声明。<!ELEMENT resource-ref (description?, res-ref-name,
  1. res-type, res-auth, res-sharing-scope?)>
  2. <!ELEMENT description (#PCDATA)>
  3. <!ELEMENT res-ref-name (#PCDATA)>
  4. <!ELEMENT res-type (#PCDATA)>
  5. <!ELEMENT res-auth (#PCDATA)>
  6. <!ELEMENT res-sharing-scope (#PCDATA)>

resource-ref子元素的描述如下: 

 ● res-ref-name是资源工厂引用名的名称。该名称是一个与java:comp/env上下文相对应的JNDI名称,并且在整个Web应用中必须是惟一的。  
● res-auth表明:servlet代码通过编程注册到资源管理器,或者是容器将代表servlet注册到资源管理器。该元素的值必须为Application或Container。 
 ● res-sharing-scope表明:是否可以共享通过给定资源管理器连接工厂引用获得的连接。该元素的值必须为Shareable(默认值)或Unshareable。

转载于:https://www.cnblogs.com/liujiacai/p/10299408.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里数据库内核月报:2017年04月

摘要&#xff1a;阿里数据库内核月报&#xff1a;2017年04月# 01 MySQL 源码分析 MySQL 半同步复制数据一致性分析# 02 MYSQL 新特性 MySQL 8.0对Parser所做的改进# 03 MySQL 引擎介绍 Sphinx源码剖析&#xff08;二&#xff09;# 04 PgSQL 特性分析 checkpoint机制浅析…

SQL Server2008导入导出数据库

一、导出数据库 1.新建一个.bak的文本 右击数据库--》Tasks--》BackUp--》Remove原来的数据库--》Add后选择之前建立的.bak档 二、导入数据库 1.右击数据库--》Tasks--》Restore--》Database--》From device--》勾选数据库之后--》点击左上角Options--》点击 --》OK覆盖 转载于…

如何使YouTube视频连续循环播放

Should you need a YouTube video on a continuous loop, a few methods can help you keep repeating a video without having to start it over manually. Here’s how to do it. 如果您需要连续循环播放YouTube视频&#xff0c;可以采用以下几种方法来继续播放视频&#xff…

Android ABI

2019独角兽企业重金招聘Python工程师标准>>> 获取当前ABI var supportsABIs:Array<String>? null if(Build.VERSION.SDK_INT > 21) {supportsABIs Build.SUPPORTED_ABIS } var currentABI Build.CPU_ABI 通过Build可以获取当前手机支持的abi集以及cpu的…

nginx限流健康检查

Nginx原生限流模块:ngx_http_limit_conn_module模块根据前端请求域名或ip生成一个key&#xff0c;对于每个key对应的网络连接数进行限制。配置如下:http模块server模块#http模块内 http {include mime.types;default_type application/octet-stream;log_format main [$t…

如何在Ubuntu上创建桌面快捷方式

Desktop icons should be simple, but they’re not on Ubuntu 18.04 LTS and newer releases like Ubuntu 19.10. Follow these easy steps to get desktop shortcuts for your favorite applications, just like on other operating systems and other Linux desktops. 桌面图…

阿里再破记录!代表中国企业首次在这项国际比赛中摘得银牌!

2月9日在洛杉矶举行的第11届网络搜索与数据挖掘国际会议&#xff08;WSDM 2018&#xff09;上&#xff0c;公布了今年的WSDM Cup竞赛成绩&#xff0c;来自阿里巴巴的AliOS团队凭借优秀的算法能力&#xff0c;摘得榜眼。这是该赛事举办11届以来&#xff0c;中国企业在该赛事上首…

关于IE 对 $.get 缓存的记录

最近在IE9中碰到一个问题是&#xff0c; 当我对某个角色进行修改的时候&#xff0c;再点击查询还是修改之前的内容&#xff0c;但是实际数据库已经修改成功&#xff0c;纠结了好一会儿之后&#xff0c;才发现是 $.get请求的问题。 因为 IE对get请求&#xff0c;如果请求url 相…

闪存驱动器_将闪存驱动器变成便携式Web服务器

闪存驱动器Portable applications are very useful for getting work done on the go, but how about portable servers? Here’s how you can turn your flash drive into a portable web server. 便携式应用程序对于在旅途中完成工作非常有用&#xff0c;但是便携式服务器呢…

Android中文API-ViewStub

ViewStub控件是一个不可见&#xff0c;0尺寸得惰性控件。当ViewStub控件设置可见&#xff0c;或者调用inflate()&#xff0c;并运行完毕之后&#xff0c;ViewStub所指定的layout资源就会被载入。这个ViewStub就会被新载入的layout文件取代。ViewStub也会从其父控件中移除。因此…

如何播放梅西百货的感恩节大游行2019

Macy’s梅西百货As we draw ever closer to the Thanksgiving holiday, multiple things come to mind: turkey, Black Friday, and the Macy’s Thanksgiving Day Parade. With that in mind, you might want to find a way to stream it for your family. 随着我们越来越接近…

thinkpaidE480office安装文件夹

C:\Program Files (x86)\Microsoft Office\root\Office16需要嵌入office的小伙伴自行百度吧教程吧&#xff0c;网上有很多的转载于:https://www.cnblogs.com/hgyzm/p/10303449.html

AJAX入门这一篇就够了

什么是Ajax Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML Ajax实际上是下面这几种技术的融合&#xff1a; (1)XHTML和CSS的基于标准的表示技术(2)DOM进行动态显示和交互(3)XML和XSLT进行数据交换和处理(4)XMLHttpRequest进行异步数据检索(5)Javascript将以上技术…

如何在iPhone和iPad上允许“不受信任的快捷方式”

Khamosh PathakKhamosh PathakShortcuts is now a stock app in iOS 13, iPadOS 13, and beyond. Thanks to Apple’s stricter rules, any shortcut you download from the internet is blocked. Here’s how you can allow untrusted shortcuts on your iPhone or iPad. 现在…

程序员技术进阶手册(一)

AI正在迅速改变世界&#xff0c;对于程序员来说&#xff0c;这绝对是一个千载难逢的转型机会。机器学习是计算机科学的一个子领域&#xff0c;在人工智能领域&#xff0c;机器学习逐渐发展成模式识别和计算科学理论的研究。从2016年起&#xff0c;机器学习到达了不合理的火热巅…

SpringBoot入门 (一) HelloWorld

一 什么是springboot springboot是一个全新的框架&#xff0c;它设计的目的简化spring项目的初始环境的搭建和开发&#xff0c;主要有以下几个特点&#xff1a; 1、简化初始配置 &#xff0c;可与主流框架集成&#xff1b; 2、内置Servlet容器&#xff0c;无需在打War包&#x…

gmail附件调用_如何将Gmail附件保存到Google云端硬盘

gmail附件调用While you can access Gmail attachments by opening the related message deep within Google’s client, it’s not very convenient. You need a central location to access saved documents and images. This guide shows you how to save Gmail attachments…

spring boot拦截器中获取request post请求中的参数(转)

文章转自 https://www.jianshu.com/p/69c6fba08c92 转载于:https://www.cnblogs.com/shuaiandjun/p/10306242.html

绝地求生大逃杀,改配置

提取效果设置配置文件 通过Procmon工具分析&#xff0c;绝地求生大逃杀效果设置的配置文件为 “C:\Users\Administrator\AppData\Local\TslGame\Saved\Config\WindowsNoEditor\GameUserSettings.ini”&#xff0c;设置好网吧需要的游戏效果后将“TslGame”文件夹提取出来即可&a…

如何使用VLOOKUP在Google表格中查找数据

VLOOKUP is one of the most misunderstood functions in Google Sheets. It allows you to search through and link together two sets of data in your spreadsheet with a single search value. Here’s how to use it. VLOOKUP是Google表格中最容易被误解的功能之一。 它使…