struts-config.xml中配置连接数据库后,取得连接的方法?
<data-sources>
<data-source type="org.apache.commons.dbcp.BasicDataSource"
key="jdbc/myDB" >
<set-property 
property="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<set-property 
property="url"
value="jdbc:sqlserver://localhost:1507;DatebaseName=MY_DB;SelectMethod=cursor;" />
<set-property property="username" value="pos" />
<set-property property="password" value="pos" />
<set-property property="maxActive" value="10" />
<set-property property="maxWait" value="5000" />
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false" />
</data-source>
</data-sources>
以上为我在struts-config.xml中配置的DataSource信息。
现在我想在Java代码中获得DataSource,方法是:
(1)DataSource dataSource = getDataSource(request);
这个方法必须在继承了Action类中写,而且要传参数request。
(2)ServletContext context=servlet.getServletContext();
这个方法也要在Action中写。
(3)Context context = new InitialContext();
DataSource datasource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");以上是我的知识范围。我想用第三种方法获得DataSource,但是怎么也得不到?是不是还需要什么其它的配置要求呢?比如在web.xml中?
或者是第三种方法是只能用Tomcat中的server.xml中写Context的时候才能用,在用struts-config.xml配置的时候不能用?谢谢大虾的帮助,这个问题困扰小弟很长时间了,一直得不到解决。还请大家帮助一下。谢谢了。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【libinichen】截止到2008-06-25 15:12:37的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:120                
    结贴数:1                  结贴分:100                
    未结数:1                  未结分:20                 
    结贴率:50.00 %            结分率:83.33 %            
    楼主加油
      

  2.   

    第三种方法是只能用Tomcat中的server.xml中写Context的时候才能用 OK
      

  3.   

    楼主既然在Struts配置文件中写了,肯定要继承Action吧
    在继承Action的类中写 
    //得到数据源
    DataSource ds=this.getDataSource(request,"keyName");
      

  4.   

    可以用struts的plugin插件来做,给你我收藏的,自己去看吧
    http://topic.csdn.net/t/20041114/22/3552332.html
      

  5.   

    http://topic.csdn.net/t/20041114/22/3552332.html可以struts的plugin插件来初始化连接池
      

  6.   

    web.xml
    里面有个
    ref-resource把你的datasource加载进去
      

  7.   

     1
    ServletContext context = servlet.getServletContext();
    DataSource dataSource = (DataSource)context.getAttribute("jdbc/myDB");//这样调用
    或者
     2
    配置文件加个<data-source type="org.apache.commons.dbcp.BasicDataSource" 
    key="jdbc/myDB"  value="sql">加个 value="sql"然后调用DataSource sqlds = this.getDataSource(request,"sql");
      

  8.   

    在连接池里直接把你拼的datasource加载进去就好了
      

  9.   

    struts自带的连接池,还不如用tomcat的连接池好用
      

  10.   

    首先谢谢大家的帮助。
    七楼的同学说的事情要在web.xml中配置,但是我已经配置了。下面为我的配置内容
    <resource-ref id="ResourceRef_1132651676764">
    <description>DB Connection for RetailData Development</description>
    <res-ref-name>jdbc/myDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    请你帮助看看,和我的struts-config.xml文件一起检查一下是否对应上了?我这两个文件都配置了。但是还是不行.难道JNDI我真的不明白?
    一般在什么情况下,才能被封装到JNDI的Context对象下呢?谢谢大家。
      

  11.   

    直接在Context文件中加入:<Resourcename="jdb/dbsource"type="javax.sql.DataSource"driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"maxIdle="2"maxWait="5000"url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=你的数据库名"maxActive="4"/>username="用户名"password="密码" 通过java的jndi就可以了InitialContext initCtx = new InitialContext();
           DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/数据库名");
           Connection conn = ds.getConnection();
      

  12.   

    楼主其实可以用hibernate代替数据库操作的
      

  13.   

    我想问的是:不在Tomcat下的Context中配置,而是在struts-config.xml或者web.xml中配置数据库连接。能不能用Context对象的lookup方法获得数据源?就这么简单。