参照tomcat的自带文档, 说明的还可以。

解决方案 »

  1.   

    在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);
             }
        }
    }
      

  2.   

    楼上没有理解我的意思,我的意思是如何调用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)
      

  3.   

    Tomcat那种配置没有发布出来,你要用IIOP或RMI或别的什么的
      

  4.   

    这样不知道是不是符合你意思 
    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;
      }
      

  5.   

    看来Tomcat是不能实现如Weblogic这样的功能了,散分了~
      

  6.   

    Can I access Tomcat's JNDI provider from outside tomcat?Not at this time.http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q8