第一步准备工作:首先需要明确一点,要获取weblogic的连接就必须依赖weblogic相关jar,不是网上所说的weblogic.jar,如果你把weblogic.jar配置在你的classpath里面是不够的,因为会报出java类文件找不到的错误诸如[Caused by: weblogic.security.subject.AbstractSubject
java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject]之类的异常。那么我们怎么办呢,其实很简单只要进入到你webloigc_home路径下进入到server/lib目录,并且运行[jdk1.6 命令“java -jar wljarbuilder.jar”;jdk1.5命令“java -jar wljarbuilder.jar -profile wlfullclient5 ”],拷贝“wlfullclient.jar或者wlfullclient5.jar”到你的classpath环境下;
第二步编码工作:新建一个java工程,新建一个java类,命名为Connector.java;首先我们初始化获取数据库连接的环境,即初始化context;
Hashtable<String, String> ht=new Hashtable<String, String>();
ht.put(Context.INITIAL_CONTEXT_FACTORY,INITIAL_CONTEXT_FACTORY);
ht.put(Context.PROVIDER_URL, PROVIDER_URL);
try {
long t1=System.currentTimeMillis();
_context=new InitialContext(ht);
long t2=System.currentTimeMillis();
System.out.println(“initial the context cost:”+(t2-t1)+” millseconds!”);
} catch (NamingException e) {
System.out.println(“initial context failured with Exception:”+e.getMessage());
e.printStackTrace();
}
接下来从context上查找JNDI获取到Datasource对象:javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup(JNDI);
再就是从Datasource中得到java.sql.Connection对象了。ds.getConnection();
3 具体的示例代码请参考如下内容,笔者将源码完全贴出:
import java.sql.*;
import java.util.*;
import javax.naming.*;
/**
* <pre>
* to get the connections of weblogic connection pool by JNDI
* the required jars include “wlfullclient.jar”,
* I know you will ask me how to get this jar? the following is the answer:
* first you must has installed the weblogic,WL_HOME means the weblogic setup directory.
* (a).Creating a wlfullclient.jar for JDK 1.6 client applications
* ===================================================================
* 1.Change directories to the server/lib directory.
* cd WL_HOME/server/lib
* 2.Use the following command to create wlfullclient.jar in the “server/lib” directory:
* java -jar wljarbuilder.jar
* this may take a few minutes ,just wait!
* 3.You can now copy and bundle the wlfullclient.jar with client applications.
* 4.Add the wlfullclient.jar to the client application’s classpath.
* ===================================================================
* (b).Creating a wlfullclient5.jar for JDK 1.5 client applications
* ===================================================================
* 1. the same as (a).1
* 2. Use the following command to create wlfullclient.jar in the server/lib directory:
* java -jar wljarbuilder.jar -profile wlfullclient5
* 3. the same as (a).3
* 4. the same as (a).4
* ===================================================================
*
*
* </pre>
* @author ubuntu
*
*/
public class Connector {
/**
* the const variable of initial context Factory,this can’t modified!
*/
final static String INITIAL_CONTEXT_FACTORY=”weblogic.jndi.WLInitialContextFactory”;
/**
* the const variable of the t3 provider URl,this need to modified by your own !
*/
final static String PROVIDER_URL= “t3://10.254.0.9:7001″;
/**
* the const variable of the JNDI name ,this need to modified by your own !
*/
final static String JNDI=”jdbc/powererp”;
/**
* the method that get Connecton from weblogic JNDI
* @return the Connection Object
*/
public Connection getConnection(){
Context ctx=null;
Connection con=null;
try{
long t1=System.currentTimeMillis();
ctx=_context;
long t2=System.currentTimeMillis();
//System.out.println(“initial the context cost:”+(t2-t1)+” millseconds!”);
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup(JNDI);
long t3=System.currentTimeMillis();
System.out.println(“get the datasource cost:”+(t3-t2)+” millseconds!”);
con=ds.getConnection();
long t4=System.currentTimeMillis();
System.out.println(“get the connection cost:”+(t4-t3)+” millseconds!”);
}catch(Exception e){
e.printStackTrace();
}
return con;
}
static Context _context=null;
static{
Hashtable<String, String> ht=new Hashtable<String, String>();
ht.put(Context.INITIAL_CONTEXT_FACTORY,INITIAL_CONTEXT_FACTORY);
ht.put(Context.PROVIDER_URL, PROVIDER_URL);
try {
long t1=System.currentTimeMillis();
_context=new InitialContext(ht);
long t2=System.currentTimeMillis();
System.out.println(“initial the context cost:”+(t2-t1)+” millseconds!”);
} catch (NamingException e) {
System.out.println(“initial context failured with Exception:”+e.getMessage());
e.printStackTrace();
}
}
/**
* the method that test whether the connection is correct got
* @param con
*/
private void testconn(Connection con){
ResultSet rs=null;
Statement stmt=null;
String sql=”select sysdate from dual”;
if(con==null)throw new RuntimeException(“the connection is null.please check!”);
try {
stmt=con.prepareStatement(sql);
rs=stmt.executeQuery(sql);
if(rs!=null&&rs.next()){
String sysdate=rs.getString(1);
System.out.println(“the oracle db sysdate is :”+sysdate);
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(“the excepiton occured:”+e.getMessage());
}finally{
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
}
catch(Exception e){}
}
}
/**
* test the connection by jndi
*/
private void invokeTestDbConnectionByJndi(){
Connection con=null;
try{
long tstart=System.currentTimeMillis();
con= getConnection();
long tend=System.currentTimeMillis();
System.out.println(“execute the method getConnection() cost:”+(tend-tstart)+” millseconds!”);
testconn(con);
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(“when execute invokeTestDbConnectionByJndi(),” +
“the excepiton occured:”+e.getMessage());
}finally{
try{
if(con!=null)con.close();
}
catch(Exception e){}
}
}
/**
* the main method
* @param args args allow null
*/
public static void main(String[] args) {
Connector cct=new Connector();
cct.invokeTestDbConnectionByJndi();
cct.invokeTestDbConnectionByJndi();
}
//—————-the following his -the test result :———————//
/**
*
* initial the context cost:5666 millseconds!
* get the datasource cost:225 millseconds!
* get the connection cost:968 millseconds!
* execute the method getConnection() cost:1193 millseconds!
* the oracle db sysdate is :2010-08-24 13:31:50.0
* get the datasource cost:4 millseconds!
* get the connection cost:33 millseconds!
* execute the method getConnection() cost:37 millseconds!
* the oracle db sysdate is :2010-08-24 13:31:51.0
*
*/
}
分享到:
相关推荐
Java应用程序通过JNDI(Java Naming and Directory Interface)方式使用WebLogic连接池是一种常见的实践,尤其是在企业级应用中。WebLogic Server是一个强大的Java EE应用服务器,它提供了丰富的资源管理功能,包括...
在 Weblogic 中,连接池配置是指将多个连接组合成一个池,以便于应用程序可以快速地获取连接。连接池配置可以提高应用程序的性能,减少与数据库的交互开销。 连接池配置包括两个主要部分:连接池和连接。连接池是指...
在 WebLogic 中,JNDI 用于管理数据源,这些数据源是应用程序用来访问数据库的连接池。当数据源的连接泄露,即应用程序未正确关闭数据库连接,会导致连接池耗尽,从而引发"No resources currently available in pool...
总结,JavaJNDI与数据连接池的结合使用,通过属性文件读取数据库连接信息,为Java应用提供了一种高效、灵活的数据库访问方式。理解和掌握这些知识点对于开发高可用、高性能的Java应用至关重要。
WebLogic Server,作为Oracle公司的一款成熟的企业级应用服务器,提供了强大的数据源(DataSource)连接池功能。下面将详细介绍如何在WebLogic中创建和配置数据源连接池,以及其重要性和优势。 首先,我们来理解...
在WebLogic8中配置连接池和JMS组件是部署和管理Java应用程序的关键步骤,特别是对于那些依赖于数据库和消息传递服务的应用。以下是详细的配置过程: 1. **配置JDBC连接池**: - 首先,通过访问`...
数据源是一种连接池,它管理数据库连接的创建、分配和回收,以提高应用程序的性能和效率。在WebLogic中,我们可以预先配置一个数据源,并将其绑定到JNDI树的一个特定位置。这样,当应用程序需要访问数据库时,只需要...
本文将详细介绍如何在WebLogic Platform 8.1控制台中设置Oracle 9i、SQL Server 和 JDataStore 数据库连接池以及如何在应用程序中获取这些连接。此外,还会演示如何使用JBuilder 10.0X for WebLogic Edition来进行...
它提供了多种方式来部署Java应用程序,包括自动部署、使用命令行工具部署以及通过WebLogic Server管理控制台进行手动部署。本文将详细介绍如何利用WebLogic Server管理控制台来进行手动应用程序部署,并简述其他两种...
### 在MyEclipse中使用Weblogic数据库连接池技术 #### 一、概述 本文将详细介绍如何在MyEclipse环境中配置并使用Weblogic数据库连接池技术。通过本教程,您将了解整个配置流程,并掌握如何利用Java命名与目录接口...
WebLogic 是一款功能强大的 Java 应用服务器,提供了强大的集成和管理功能,而 JNDI(Java Naming and Directory Interface)是 Java 中的一种命名和目录接口,用于在 Java 应用程序中访问各种资源,例如数据库、...
在Weblogic这种Java应用服务器上,配置Hibernate为JNDI是为了使应用能够通过JNDI查找并使用Hibernate的SessionFactory,进而进行数据库操作。 首先,配置Hibernate所需的类路径是非常重要的步骤。这包括将Hibernate...
本资源包含对JNDI数据库连接池的详细讲解,以及监听器的代码实例和讲解资料,旨在帮助开发者更好地理解和应用这些技术。JNDI主要通过以下步骤实现数据库连接的管理: 1. **配置JNDI数据源**:在应用服务器(如...
### WebLogic中建立数据库连接池与数据源及利用JBuilder进行测试 ...通过上述步骤,不仅可以在WebLogic中成功建立数据库连接池与数据源,还能确保其在JBuilder中的正确性和有效性,从而提高应用程序的性能和稳定性。
以上内容覆盖了 WebLogic 与 Oracle 数据库连接的基本原理、连接池配置参数详解以及使用 Java 进行连接测试的具体方法,并简要介绍了 JSF 1.2 在 MyEclipse 中的配置流程。希望这些信息能够帮助您更好地理解和操作 ...
数据库连接泄漏是指应用程序在使用完数据库连接后没有正确地关闭这些连接,导致连接池中的可用连接数量逐渐减少,最终可能耗尽所有可用连接。这种情况会严重影响系统的稳定性和响应时间。 #### 三、临时解决连接...
JNDI,全称Java Naming and Directory Interface,是Java平台中的一个标准接口,它提供了一种在Java应用程序中查找和管理资源的方式。JNDI的主要目的是为了实现资源的集中管理和透明访问,使得开发者无需关心资源的...
在WebLogic服务器中,配置数据库连接池是管理应用程序与数据库交互的关键步骤。WebLogic支持多种数据库,包括SQL Server。下面将详细介绍如何在WebLogic中配置SQL Server 2005的连接池。 首先,理解连接池的概念至...
在Java Web开发中,JNDI(Java Naming and Directory Interface)是一个重要的标准接口,它允许应用程序查找和使用各种资源,包括数据源(Datasource)。数据源是管理数据库连接的组件,能够有效地处理数据库连接的...