Connection.java
Connection public static Connection getConnection() {
int count=1;
try {
Context ctx = new InitialContext();
if (ctx == null) {
throw new Exception("Can't create context!");
}
DataSource ds = (DataSource) ctx
.lookup("java:comp/env/jdbc/GPRSDB");
Connection conn = ds.getConnection();
Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("select sysdate from dual");
rs.close();
stm.close();
return conn;
} catch (Exception e) {
e.printStackTrace();
try{
if(count<=10){
Thread.sleep(1000);
count++;
System.out.println("连接失败,第"+count+"次重连");
return getConnection();
}else{
System.out.println("连接次数超过10次,连接失败");
return null;
}
}catch(Exception er){
er.printStackTrace();
}
return null;
}
}
context.xml配置内容
<Context antiJARLocking="true" path="/wlan_web_sd">
<!-- 连接池 -->
<Resource
name="jdbc/GPRSDB" auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="GPRS" password="Dx_gprs1234" driverClassName="oracle.jdbc.driver.OracleDriver"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
url="jdbc:oracle:thin:@10.87.50.143:1521:ipnet"/>
</Context>
java:comp/env 是环境命名上下文(environment naming context(ENC)),是在EJB规范1.1以后引入的,引入这个是为了解决原来JNDI查找所引起的冲突问题,也是为了提高EJB或者J2EE应用的移植性。
ENC是一个引用,引用是用于定位企业应用程序的外部资源的逻辑名。引用是在应用程序部署描述符文件中定义的。在部署时,引用被绑定到目标可操作环境中资源的物理位置(JNDI名)。使用ENC是把对其它资源的JNDI查找的硬编码解脱出来,通过配置这个引用可以在不修改代码的情况下,将引用指向不同的EJB(JNDI)。 在J2EE中的引用常用的有:
———JDBC 数据源引用在java:comp/env/jdbc 子上下文中声明
———JMS 连接工厂在java:comp/env/jms 子上下文中声明
———JavaMail 连接工厂在java:comp/env/mail 子上下文中声明
———URL 连接工厂在 java:comp/env/url子上下文中声明