求助:如果通过weblogic的datasource获取连接!!!

05-04-07 liuzhy_max

我创建了一个java项目(不是j2ee项目),然后通过Context获取weblogic的datasource,

内容如下:weblogic中的datasource的jini的名字为MysqlDataSource,同时weblogic上的连接池

都已经配置好了,也和dataSource绑定了,这都没有问题,我在EJB中测试都通过了,

问题:

现在我只是做了一个java项目,项目中将weblogic的包如weblogic.jar,webservice.jar,..

都包含了,然后通过如下代码调用:

package cms_sock.dbutil;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Hashtable;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

/**

* @author liuzhy

*

* 功能:

*

* 输入参数:

*

* 输出:

*

* 注意:

*

*/

public class CmsDataSourceFactory {

private static InitialContext getContext(String serverurl) throws NamingException {

Hashtable props = new Hashtable();

props.put(

InitialContext.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");

props.put(InitialContext.PROVIDER_URL, serverurl);

// This establishes the security for authorization/authentication

// props.put(InitialContext.SECURITY_PRINCIPAL,"username");

// props.put(InitialContext.SECURITY_CREDENTIALS,"password");

InitialContext initialContext = new InitialContext(props);

return initialContext;

}

// public Connect getConnection()

public static Connection getConnection(String datasource, String serverurl)

throws Exception {

try {

Context ctx = getContext(serverurl);

Object objRef = ctx.lookup(datasource);

javax.sql.DataSource ds =

(javax.sql.DataSource) javax.rmi.PortableRemoteObject.narrow(

objRef,

javax.sql.DataSource.class);

return ds.getConnection();

} catch (NamingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

throw e;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

throw e;

}

}

}

public class DbTest {

public static void main(String[] args) {

Connection conn = null;

String strSql = "select * from account";

try {

conn =

CmsDataSourceFactory.getConnection(

"MysqlDataSource",

"t3://127.0.0.1:7001");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

运行时,报异常,ds.getConnection();出错。异常是:rmi中的一个异常。

但是如果我先建立一个web项目,然后在web项目中建立这两个类,运行就没有错,

是不是我在java项目中关于weblogic的包没有写全吗,还是别的什么原因。