如何在Java类中调用Tomcat的JNDI进行数据库连接?
调用Weblogic的方式已经调试通过,有没有达人了解怎么调用Tomcat的JNDI进行数据库连接?
Weblogic的调用代码如下:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class TestWeblogic {
public static void main(String[] args) throws Exception {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://localhost:7003");
Context ctx = new InitialContext(env);
DataSource ds = (DataSource)ctx.lookup("Ora_hpora");
Connection con = ds.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from mbsys");
while(rs.next()) {
System.out.println(rs.getString(1) + "\t" + rs.getString(2));
}
}
}
问题点数:100、回复次数:15Top
1 楼kindani(kindani)回复于 2005-07-20 12:16:08 得分 10
参照tomcat的自带文档, 说明的还可以。Top
2 楼newsea008(J-LOVE)回复于 2005-07-20 12:38:43 得分 10
在server.xml文件中的</Host>标志以上添加如下内容:
<Context path="/mew"
docBase="/mew"
crossContext="false"
debug="0"
reloadable="true">
<DecodeInterceptor defaultEncoding="utf-8" useSessionEncoding="false" />
<Resource name="jdbc/sa" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/sa">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://192.168.1.33:1433;DatabaseName=test</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
然后把数据库连接和数据库名密码修改成你自己的。ok我这是用的sqlserver,你可以把驱动类改成oracle
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class TestTomcat {
public static void main(String[] args) throws Exception {
DataSource ds = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
ds = (DataSource)envCtx.lookup("jdbc/sa");
if (ds != null){
Connection con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet rst = stmt.executeQuery("sql语句");
while(rst.next()){
//取数据操作
}
}
else{
out.println("没有得到数据源");
}
}catch(Exception e){
out.println(e);
}
}
}
Top
3 楼xfspeed(风飞雪)回复于 2005-07-20 12:54:01 得分 0
楼上没有理解我的意思,我的意思是如何调用Tomcat发布出来的JNDI进行数据库连接,而这个Tomcat可能在任何地方,不一定在本机,Weblogic中可以设定URL,其实就是不知道
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://localhost:7003");
这两句如果换成Tomcat容器的话该如何写,上下文工厂的类用哪个,URL的协议用什么(weblogic用的t3)Top
4 楼simon0512(虫虫)回复于 2005-07-20 12:56:22 得分 5
upTop
5 楼simone183()回复于 2005-07-21 10:27:23 得分 5
帮你顶Top
6 楼xfspeed(风飞雪)回复于 2005-07-21 16:07:56 得分 0
没有人知道?Top
7 楼Maple99(Maple)回复于 2005-07-21 16:48:26 得分 5
我也想知道怎么去写,希望高手来解释一下,友情upTop
8 楼xfspeed(风飞雪)回复于 2005-07-22 09:34:44 得分 0
自己UP~~Top
9 楼xfspeed(风飞雪)回复于 2005-07-25 08:56:22 得分 0
还是没有人知道吗?苦啊~~Top
10 楼ses127127(ses)回复于 2005-07-25 09:04:12 得分 5
学习中Top
11 楼kypfos(不在寻梦)回复于 2005-07-25 09:55:35 得分 50
Tomcat那种配置没有发布出来,你要用IIOP或RMI或别的什么的Top
12 楼xfspeed(风飞雪)回复于 2005-07-25 20:16:51 得分 0
楼上有没有例子?Top
13 楼edwin_su()回复于 2005-07-26 09:30:38 得分 10
这样不知道是不是符合你意思
public static Connection getConnection(String jndiName) {
Connection conn = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) initCtx.lookup("jndiName");
conn = ds.getConnection();
}
catch (NamingException e) {
e.printStackTrace();
}
if (conn != null) {
System.out.println("Jndi is OK!");
}
return conn;
}
Top
14 楼xfspeed(风飞雪)回复于 2005-08-02 13:14:10 得分 0
看来Tomcat是不能实现如Weblogic这样的功能了,散分了~Top
15 楼toto2004(易德)回复于 2005-10-13 14:28:56 得分 0
顶Top




