用jsp连接sql server的时候,为什么会出现以下错误?(设置了几次classpath,都不行,请教!)

janlon 2004-08-26 02:02:43
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.myjsp.testmssql_jsp._jspService(testmssql_jsp.java:86)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
org.apache.jsp.myjsp.testmssql_jsp._jspService(testmssql_jsp.java:54)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.27 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.27
...全文
116 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
janlon 2004-08-26
  • 打赏
  • 举报
回复
友情结贴!!!

教训:
1、打个sp3的补丁
2、不要使用长文件名
3、自己多试试,不要全信帮助文档(部分是基于某种假设)

最后感谢多位网友的热心帮助!!!

power17() wittyWYZ(美丽心情) oliveyu(程序牛仔) yys79(shart-shoot)
janlon 2004-08-26
  • 打赏
  • 举报
回复
power17() :(不好意思,因为两个配置都有点问题,所以有时搞乱了!)现在好了,见到你就知道是sql server的啦!~(感谢你对此问题的关注)

tomcat没有问题的,我试过了!!!
power17 2004-08-26
  • 打赏
  • 举报
回复
楼主把问题弄乱了,一会是mssql,一会是sqlserver2000,大伙不好回答啊。

首先问一个问题:你的tocat有没有正常运行
janlon 2004-08-26
  • 打赏
  • 举报
回复
自己顶一下!
loveunittesting 2004-08-26
  • 打赏
  • 举报
回复
是不是数据库服务不存在阿,这不应该是ap server配置的问题,其他能测试连接池的ap server测试一下就知道了。
janlon 2004-08-26
  • 打赏
  • 举报
回复
呵!还是mysql的,先帮忙解决mssql问题,再看mysql的...感谢ing...
oliveyu 2004-08-26
  • 打赏
  • 举报
回复
up
janlon 2004-08-26
  • 打赏
  • 举报
回复
还要改server.xml?不会吧?

mjfsun(清风) :

你这篇好像是tomcat与apache整合的文章!!!

这个org.gjt.mm.mysql.Driver为什么要替换成 com.mysql.jdbc.Driver???
mjfsun 2004-08-26
  • 打赏
  • 举报
回复
这个帖子是我转的,忘记是谁的了,谢谢原作者。

不过先用了再说

你把后面的mysql数据库的相关配置改一改

1. %apache2_home%/conf/Httpd.conf

DocumentRoot "D://tomcat5/webapps/ROOT"

<Directory "D:/tomcat5/webapps/ROOT">

#######AddDefaultCharset ISO-8859-1

AddDefaultCharset GB2312

最后一行加入

LoadModule jk2_module modules/mod_jk2.so

--------------------------------------------------------------------------------------

2. %apache2_home%/conf/workers2.properties



[shm]

file=d:/Apache2/Logs/shm.file

size=1048576



[channel.socket:localhost:8009]

port=8009

host=127.0.0.1



[ajp13:localhost:8009]

channel=channel.socket:localhost:8009



[uri:/*.jsp]

workers=ajp13:localhost:8009



我试过worker=ajp.......似乎不可以


--------------------------------------------------------------------------



3. %Tomcat5_home%/conf/jk2.properties

handler.list=apr,request,channelJni

# Override the default port for the socketChannel

channelSocket.port=809

#

# shm.file=${jkHome}/work/jk2.shm



apr.jniModeSo=d:/apache2/modules/mod_jk2.so



# apr.jniModeSo=inprocess



shm.file=d:/Apache2/logs/jk2.shm

-------------------------------------------------------------------------------

4.环境变量设置



JAVA_HOME
D:\Program Files\Java\j2sdk1.4.2

CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%

JAVA_HOME%\jre\lib;%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\jre\lib\rt.jar;%

TOMCAT_HOME%\common\lib\mysql-connector-java.jar;%

TOMCAT_HOME%\common\lib

PATH
%JAVA_HOME%;%JAVA_HOME%\bin

TOMCAT_HOME
d:\Tomcat5





6. jdbc连接mysql

Copy mysql-connector-3.0-bin.jar(到www.mysql.org下载)到D:\tomcat5\common\lib下

修改%tomcat5_Home%/conf/server.xml 寻找org.gjt.mm.mysql.Driver替换成 com.mysql.jdbc.Driver

copy县面 这段到server.xml </host>前

-------------------------------------------------------------------------


<Context path="" docBase="ROOT"
debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>

<Resource name="jdbc/testDB"
auth="Container"
type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/testdb">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>

<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>

<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>

<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>

<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>test</value>
</parameter>
<parameter>
<name>password</name>
<value>test</value>
</parameter>

<!-- Class name for mm.mysql JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>

<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
connection. mysqld by default closes idle connections after 8 hours.
-->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/testdb?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>

janlon 2004-08-26
  • 打赏
  • 举报
回复
对对!还加一个就是sql server2000了!

你说那些jar文件应该放在什么位置呢?
power17 2004-08-26
  • 打赏
  • 举报
回复
你不是说sqlserver怎么才一会就变成mysql了。配制去google一下,出来一堆。
wittyWYZ 2004-08-26
  • 打赏
  • 举报
回复
我刚才试了一下,把安装jdbc后的lib文件夹里面的jar文件拷贝到我的tomcat里面的lib文件夹里面了,还是不行,希望高手指教.顶!!!!
janlon 2004-08-26
  • 打赏
  • 举报
回复
好应该怎么配呢?跟jdbc的版本有关吗?我用的是sp3...
jdk1.4.2
win2003
tomcat5.0.27
apache2.0
mysql 3.23.55
power17 2004-08-26
  • 打赏
  • 举报
回复
代码没有问题

配制不对
janlon 2004-08-26
  • 打赏
  • 举报
回复
方法:
------------------------------------------------------------------
1、安装sql server的jdbc
2、将安装后的lib下面的文件拷到tomcat5.0下面的common\lib
3、设置classpath,指向jar文件
------------------------------------------------------------------
代码如下:(测试链接代码)
------------------------------------------------------------------

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>

<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://192.168.12.15:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="janlon";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from jobs";
out.print(sql);
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
power17 2004-08-26
  • 打赏
  • 举报
回复
就是你的驱动有点小问题,不过还是把你的代码贴出来吧,这样比较容易解决问题。

你是怎么弄你的驱动的,顺便也说一下。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧