用MyEclipse在Struts1.x中配置mysql和sqlserver的datasource

如果用myeclipse在struts配置MSSQL2000的数据源时,老是提示找不到driver,解决办法如下:

直接在struts-config.xml中右键data-sources然后New。 默认的type是: org.apache.struts.util.GenericDataSource ,struts自带的一个数据库连接池。 然后正确输入各种property的value。 测试,好用。 
如果将type选择为: org.apache.commons.dbcp.BasicDataSource 这个DBCP的数据库连接池。 然后键入正确的value。 测试,提示各种异常找不到Driver。 
查看DBCP的文档,发现MYECLIPSE生成的配置XML元素有问题。 
DBCP需要的是driverClassName和username这两个properties。 
而Myeclipse自动生成的是driverClass和user这两个properties。

如果你所使用的MyEclipse的版本是6.x,那么你通过图形化创建的话,除开有以上问题外,可能还会有<datasources></datasources>位置 不对.所以希望大家认真看清楚再进行测试


改过来之后发现DBCP的数据库连接池也好用了,这应该算是MYECLIPSE开发struts的一个BUG吧,数据库连接池的配置是按照struts默认的GenericDataSource来的。 
总结:
myeclipse自动生成的strust-config.xml有几点要注意: 
1.driverClassName不是driverclass; 
2.username不是user 
3.不要设置loginTimeout. (

假如你不小心设置了该选项,那么给出的错误将会是:

严重: Initializing application data source sqlserver
java.lang.reflect.InvocationTargetException

...........

Caused by: java.sql.SQLException: Cannot create JDBC driver of class 'net.sourceforge.jtds.jdbc.Driver' for connect URL 'null'
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:541)
at org.apache.commons.dbcp.BasicDataSource.setLoginTimeout(BasicDataSource.java:367)
... 40 more

........

严重: Servlet /MyStruts threw load() exception
javax.servlet.UnavailableException: Initializing application data source sqlserver

......

)
只要你取消此属性的设置,错误就将消失.具体原因再查....

注意:我们大家都知道对于逻辑的处理最好是在逻辑层处理,但是在Struts1.x中,对于数据源的调用,只能在action中:DataSource ds=getDataSource(request,"datasource");


MSSQLServer2000数据源配置

<data-sources> 
<data-source key="datasource" type="org.apache.commons.dbcp.BasicDataSource"> 
<set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" /> 
<set-property property="url" value="jdbc:microsoft:sqlserver://localhost:1433;databaseName=test" /> 
<set-property property="username" value="sa" /> 
<set-property property="password" value="" /> 
<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>

MySQL数据源配置
<data-sources > 
<data-source key="datasource" type="org.apache.commons.dbcp.BasicDataSource"> 
<set-property property="password" value="1234" /> 
<set-property property="minCount" value="1" /> 
<set-property property="maxCount" value="10" /> 
<set-property property="username" value="root" /> 
<set-property property="driverClassName" value="org.gjt.mm.mysql.Driver" /> 
<set-property property="description" value="for struts attack aolution" /> 
<set-property property="url" value="jdbc:mysql://localhost:3306/attack" /> 
<set-property property="readOnly" value="false" /> 
<set-property property="autoCommit" value="true" /> 
</data-source> 
</data-sources>

注意MSSQL 与MYSQL在配置的区别 : 主要体现在最后两个上面(autoCommit和readOnly defaultAutoCommit和defaultReadOnly)

调用的时候在Action里面getDataSource(request,"datasource");这个datasource就是上面那个key值,2者要对应,OK!!! 
注意commons-collections.jar ,commons-pool.jar,commons-dbcp.jar还有数据库驱动一定要注意拷贝到tomcat/common/lib里面, commons-collections.jar ,commons-pool.jar,commons-dbcp.jar由Tomcat自带,已经在上面的目录中了,其实只要将数据库驱动放进去就可以了. commons-collections.jar ,commons-pool.jar,commons-dbcp.jar如果没有的话去apache网站下就可以了

 

struts自动给的生成的代码里面有几个属性名和这里有出入,并且有几个名可能在这里没有定义,所以你可以在加入jar包之后,再根据它的定义修改自己的代码即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值