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

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


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: 

<resource-ref id="ResourceRef_1129470735234">
	<res-ref-name>cas_ase</res-ref-name>
	<res-type>java.sql.DataSource</res-type>
	<res-auth>Container</res-auth>
	<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref> 

ibm-web-bnd.xmi: 

<resRefBindings xmi:id="ResourceRefBinding_1129470735234"
	jndiName="jdbc/cas_ase">
	<bindingResourceRef href="WEB-INF/web.xml#ResourceRef_1129470735234" />
</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代码: 

package com;

import java.sql.Connection;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class conn {

	public static void main(String[] args) throws Exception {
		InitialContext initialContext = getInitialContext();
		javax.sql.DataSource ds = (DataSource) initialContext.lookup("jdbc/cas_ase");
		Connection cn = ds.getConnection();
		if (cn != null){
			System.out.println("Connection ok");
		}
	}

	/* 因为此类不在Websphere服务器内部运行,所以需要配置环境变量,否则是可以省略的 */
	public static InitialContext getInitialContext() throws NamingException {
		Hashtable env = new Hashtable();

		env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
		env.put(Context.PROVIDER_URL, "iiop://localhost:2809"); // iiop是协议
		InitialContext context = new InitialContext(env);

		return context;
	}

}

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


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

 resource-ref元素用于指定对外部资源的servlet引用的声明。
  <!ELEMENT resource-ref (description?, res-ref-name,
  res-type, res-auth, res-sharing-scope?)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT res-ref-name (#PCDATA)>
  <!ELEMENT res-type (#PCDATA)>
  <!ELEMENT res-auth (#PCDATA)>
  <!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。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IBM WebSphere是一个基于Java的应用程序服务器,提供了许多功能和服务来支持企业级应用程序的开发和部署。数据源WebSphere用于连接和管理数据库的组件之一,它允许应用程序从数据库获取和更新数据。 在IBM WebSphere数据源可以配置为自动提交或手动提交模式。自动提交模式是默认的模式,它意味着每次执行SQL语句后,WebSphere会自动将更改提交到数据库。这意味着事务会自动提交,不需要开发人员显式地进行提交操作。 然而,有些应用程序可能需要更细粒度地控制事务的提交。在这种情况下,开发人员可以将数据源配置为关闭自动提交。关闭自动提交模式意味着每次执行SQL语句后,事务并不立即提交,而是等待开发人员进行提交操作。 关闭自动提交模式可以提供更好的事务控制,尤其在需要进行多个相关数据库操作的情况下。开发人员可以将一系列数据库操作放在一个事务,并在适当的时候进行提交,以确保数据的一致性和完整性。如果在事务的任何一个操作失败,可以回滚事务,以恢复到修改前的状态。 为了关闭自动提交模式,开发人员需要在WebSphere配置文件进行设置。具体的配置过程可以参考IBM WebSphere的官方文档或相关的教程。 总之,IBM WebSphere提供了数据源配置选项,可以关闭自动提交模式,实现更细粒度的事务控制。这样能够确保数据的一致性和完整性,在相关的数据库操作失败时可以进行回滚操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值