[求助]tomcat+struts+mssqlserver2000 不能连接到数据库
tomcat:5.0.28
struts:1.2.4
mssqlserver2000:sp3
mssqlserver jdbc driver:sp3
我首先把struts包中的struts-blank.war拷贝到了tomcat的webapps目录下,启动tomcat,自动解开struts-blank.war,然后在在浏览器上试了一下,结果成功显示了struts-blank应用的欢迎界面,然后我把jdbc的三个jar文件拷贝到了webapps\struts-blank\WEB-INF\lib目录下,然后在struts-config.xml中配置数据源:
<data-sources>
<data-source key="TEST" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<set-property property="url"
value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=teststruts;SelectMethod=cursor" />
<set-property property="username" value="sa" />
<set-property property="password" value="password" />
<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>
然后重新启动tomcat,结果tomcat启动过程中报错:
信息: Installing web application at context path /struts-blank from URL file:D:/
Tomcat 5.0/webapps/struts-blank
2004-11-2 23:04:13 org.apache.struts.action.ActionServlet initModuleDataSources
严重: Initializing application data source TEST
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFact
ory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou
rce.java:855)
at org.apache.commons.dbcp.BasicDataSource.setLogWriter(BasicDataSource.
java:598)
at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionSe
rvlet.java:778)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:331)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
java:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:86
2)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContex
t.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:80
7)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDep
loyer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:625
)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431
)
)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478
)
at org.apache.catalina.core.StandardService.start(StandardService.java:4
80)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:231
3)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Err
or establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Sou
rce)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown S
ource)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv
erConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(Bas
icDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou
rce.java:851)
... 31 more
请教各位老大,这是怎么回事啊?
问题点数:0、回复次数:11Top
1 楼xqi8(星期八)回复于 2004-11-02 23:35:39 得分 0
我也采用这个模式开发,但是一切正常,请把连接代码,程序贴出来看看,我可能能帮你,
我是用DAOTop
2 楼kui(kui)回复于 2004-11-03 09:15:24 得分 0
struts:1.2.4 好象不能直接这样用。http://dev.csdn.net/user/kui 《Struts 1.2.1新特点简介(1) 》
看来上Struts_db开源项目还是有一点点用处。
可看看javaweb.getbbs.com的Struts_db开源项目。
[原创]Struts_DB 0.1版本
Struts_DB车 0.1版本源程序
包括如下内容:
(1)数据库连接池;
(2)Struts PlugIn插件;
(3)Struts 数据连接池服务器文件;
(4)Struts数据库中文显示过滤器文件。
源程序放在网络硬盘上,地址:http://vv.vdisk.cn/login.php
ID:javaweb
源程序文件名:struts_db_src.rar
编译后生成库文件:struts_db.jar
同时还有两个例子。
Top
3 楼kui(kui)回复于 2004-11-03 09:15:24 得分 0
struts:1.2.4 好象不能直接这样用。http://dev.csdn.net/user/kui 《Struts 1.2.1新特点简介(1) 》
看来上Struts_db开源项目还是有一点点用处。
可看看javaweb.getbbs.com的Struts_db开源项目。
[原创]Struts_DB 0.1版本
Struts_DB车 0.1版本源程序
包括如下内容:
(1)数据库连接池;
(2)Struts PlugIn插件;
(3)Struts 数据连接池服务器文件;
(4)Struts数据库中文显示过滤器文件。
源程序放在网络硬盘上,地址:http://vv.vdisk.cn/login.php
ID:javaweb
源程序文件名:struts_db_src.rar
编译后生成库文件:struts_db.jar
同时还有两个例子。
Top
4 楼kui(kui)回复于 2004-11-03 09:23:07 得分 0
下载《Struts开发实例》地址:
http://www.infoxa.com/asp/book/xxnr.asp?id=1333Top
5 楼kui(kui)回复于 2004-11-03 09:23:07 得分 0
下载《Struts开发实例》地址:
http://www.infoxa.com/asp/book/xxnr.asp?id=1333Top
6 楼basten_chenbin()回复于 2004-11-03 12:38:49 得分 0
我根本就还没开始写程序,就是配置了那个datasource后tomcat一启动就出现这些错误.
有人说com.microsoft.jdbc.sqlserver.SQLServerDriver不能用了,要用什么SQLServerDataSource,不知道是否如此,以前都是用SQLServerDriver的啊Top
7 楼basten_chenbin()回复于 2004-11-03 12:43:05 得分 0
kui兄:
你的大作《Struts 1.2.1新特点简介(1) 》早就拜读过了,但是好像没说怎么配置啊,帮忙啊Top
8 楼kui(kui)回复于 2004-11-03 13:33:10 得分 0
http://vv.vdisk.cn/login.php
ID:javaweb
Struts_db应用模板(使用Servlet).rar
使用方法1,在web.xml中以servlet加载:
<servlet>
<servlet-name>dbInit</servlet-name>
<servlet-class>javawebstudio.struts_db.DBInitServlet</servlet-class>
<init-param>
<param-name>driverClass</param-name>
<param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>
</init-param>
<init-param>
<param-name>jdbcURL</param-name>
<param-value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=EDB</param-value>
</init-param>
<init-param>
<param-name>minCount</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>maxCount</param-name>
<param-value>10</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>user</param-name>
<param-value>sa</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>sa</param-value>
</init-param>
</servlet>
使用方法2,在struts-config.xml中以PlugIn加载:
<plug-in className="javawebstudio.struts_db.DatabasePlugIn" >
<set-property property="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<set-property property="jdbcURL" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=EDB"/>
<set-property property="minCount" value="1"/>
<set-property property="maxCount" value="10"/>
<set-property property="user" value="sa"/>
<set-property property="password" value="sa"/>
</plug-in >
其用法与《Struts开发实例》中数据库应用的例子完全一样。Top
9 楼basten_chenbin()回复于 2004-11-03 15:58:41 得分 0
谢谢kui,回去试试再来Top
10 楼basten_chenbin()回复于 2004-11-03 16:18:09 得分 0
顺便问一下kui,用PlugIn方式有什么好处啊,和直接在struts-config.xml中配置相比Top
11 楼basten_chenbin()回复于 2004-11-03 21:58:27 得分 0
问题找到了!
我的sqlserver的端口号不知道为什么成了1139,而不是1433。
奇怪,我是缺省安装的,而且肯定没有改过。
不过还是请教kui,如果配置在struts-config.xml,是否任何地方要使用数据源,都必须用Action的getDataSource方法得到connetion?Top




