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配置的时候不能用?谢谢大虾的帮助,这个问题困扰小弟很长时间了,一直得不到解决。还请大家帮助一下。谢谢了。
<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配置的时候不能用?谢谢大虾的帮助,这个问题困扰小弟很长时间了,一直得不到解决。还请大家帮助一下。谢谢了。
楼主【libinichen】截止到2008-06-25 15:12:37的历史汇总数据(不包括此帖):
发帖数:2 发帖分:120
结贴数:1 结贴分:100
未结数:1 未结分:20
结贴率:50.00 % 结分率:83.33 %
楼主加油
在继承Action的类中写
//得到数据源
DataSource ds=this.getDataSource(request,"keyName");
http://topic.csdn.net/t/20041114/22/3552332.html
里面有个
ref-resource把你的datasource加载进去
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");
七楼的同学说的事情要在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对象下呢?谢谢大家。
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/数据库名");
Connection conn = ds.getConnection();