CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2EE / EJB / JMS

如何在Java类中调用Tomcat的JNDI进行数据库连接?

楼主xfspeed(风飞雪)2005-07-20 10:34:35 在 Java / J2EE / EJB / JMS 提问

调用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

相关问题

  • excel调用java类
  • 如何用在一个应用程序中用JNDI调用tomcat的数据库连接池?
  • Java调用系统命令
  • java 如何调用 DLL
  • java如何调用com?
  • 用java如何调用WORD
  • JAVA调用DB2失败(急~~~~)!!!
  • JAVA怎么调用OCX???
  • java如何调用informix呢?
  • java远程方法调用?

关键词

  • 数据库
  • 连接
  • ds
  • tomcat
  • weblogic
  • sa
  • jdbc
  • 调用
  • initctx
  • jndi

得分解答快速导航

  • 帖主:xfspeed
  • kindani
  • newsea008
  • simon0512
  • simone183
  • Maple99
  • ses127127
  • kypfos
  • edwin_su

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo