配置resin服务器,出现不明问题,请高手解答,新手也不妨进来看看

由 kensin 在 01-07-2004 12:39 发表:

配置resin服务器,出现不明问题,请高手解答,新手也不妨进来看看

配置的一台resin服务器,在stdout.log中经常发现下面的内容。

registerDriver: driver[className=org.gjt.mm.mysql.Driver,org.gjt.mm.mysql.Driver@1de256f]

DriverManager.getConnection("jdbc:mysql://localhost/testdb?user=aaa&password=12345")

trying driver[className=com.caucho.sql.DBPool,[DBPool null]]

trying driver[className=org.gjt.mm.mysql.Driver,org.gjt.mm.mysql.Driver@1de256f]

请问这是什么原因?如何解决?

在日志文件中泄露数据库的相关信息,总觉得是不好的。

不论是采有“mysql-connector-java-3.1.0-alpha”,还是程序员写的mysql.jar文件(放置在WEB-INF/lib目录下),这样的日志都会出现。

另一个奇怪的问题是,隔一段时间(一至三天不等),通过浏览器访问jsp程序,会发现它连不上数据库(网页可以打开,但是那个从数据库中读取出数据的部分则在页面上显示为空间),查看进程时,resin进程和mysql都正常。

不知何故,重启resin后,故障现象就会消失。

偶不懂jsp程序,恳请谁能解释一下resin和数据库结合的一些机制。


Linux总是给你带来很多的无奈,甚至是很多的烦恼,但也同时能给你带来很多的惊喜,在山穷水尽之际突然出现柳暗花明,真是让你又爱又恨,但又没法抗拒。。。。。。


由 kensin 在 01-08-2004 12:26 发表:


没有哪位兄弟懂这方面吗?

还是它太过简单?

我已经找了不少的资料,都没有办法,只有向这里的高人请教了


Linux总是给你带来很多的无奈,甚至是很多的烦恼,但也同时能给你带来很多的惊喜,在山穷水尽之际突然出现柳暗花明,真是让你又爱又恨,但又没法抗拒。。。。。。


由 kenwee 在 01-09-2004 00:57 发表:


JDBC的驱动有问题。


屏幕守望者……


由 kensin 在 01-09-2004 17:28 发表:


呵呵,kenwee是热心的兄弟,谢谢:)

能讲讲正确的安装方法是怎样的吗?

我安装的jdbc版本是:mysql-connector-java-3.1.0-alpha.tar.gz,根据解压的后的README文件,将

解压后的mysql-connector-java-3.1.0-alpha-bin.jar文件拷贝到了jsp程序主目录下的/WEB-INF/lib/目录下。

jsp程序可以正确的连结到数据库,只是会在resin的日志文件中产生上述的错误日志。


Linux总是给你带来很多的无奈,甚至是很多的烦恼,但也同时能给你带来很多的惊喜,在山穷水尽之际突然出现柳暗花明,真是让你又爱又恨,但又没法抗拒。。。。。。


由 goldeagle 在 01-09-2004 17:33 发表:


你把 jdbc driver 拷贝到 resin 的 lib 目录下

然后重新启动 resin


/**

  • = just a kind of bird! =

  • @machine1: axp 1500+,256MBddr,R9550

  • @machine2: A64 3000+,1GB,120GB

  • @machine3: Palm Zire 72

  • @os: Gentoo Linux/WinXP/FreeBSD

*/


由 kensin 在 01-09-2004 18:14 发表:


谢谢goldeagle。

你的方法我试了一下,现象没有改观。

这台机上有两套JSP程序,分别通过不同的端口来访问。当将jdbc driver拷贝到resin的lib目录下后,重启resin,出现的现象如下:

有一套,可以正常的访问,但是在stdout日志中仍然产生上述一样的日志内容。

另一套,则无法正常访问,出现的错误如下:

java.sql.SQLException: Column 'sid' not found.

at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:2368)

at com.mysql.jdbc.ResultSet.getString(ResultSet.java:1901)

at _index__jsp._jspService(_index__jsp.java:103)

at com.caucho.jsp.JavaPage.service(JavaPage.java:75)

at com.caucho.jsp.Page.subservice(Page.java:506)

at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)

at com.caucho.server.http.Invocation.service(Invocation.java:315)

at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:344)

at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274)

at com.caucho.server.TcpConnection.run(TcpConnection.java:139)

at java.lang.Thread.run(Thread.java:534)

当删除lib下的jdbc driver后,两套jsp程序再次恢复“正常”,而stdout中的日志照旧。


Linux总是给你带来很多的无奈,甚至是很多的烦恼,但也同时能给你带来很多的惊喜,在山穷水尽之际突然出现柳暗花明,真是让你又爱又恨,但又没法抗拒。。。。。。


由 goldeagle 在 01-09-2004 22:23 发表:


我希望你可以确认几个事情:

1,resin 本身自带 mysql 的 driver 的,引用方式参照手册。

2,尝试将 jar 加入到 CLASSPATH 里面

3,最好能够将调用驱动程序的代码段贴出来,便于分析问题

一般是 Class.forName()

4,你可以查看 web.xml 和 resin.conf,确信你的虚拟目录中对数据库驱动程序的声明是正确的。

其实 resin 是很容易使用的,不过因为太灵活了,所以在配置上有可能出现冲突。


/**

  • = just a kind of bird! =

  • @machine1: axp 1500+,256MBddr,R9550

  • @machine2: A64 3000+,1GB,120GB

  • @machine3: Palm Zire 72

  • @os: Gentoo Linux/WinXP/FreeBSD

*/


由 goldeagle 在 01-09-2004 22:33 发表:


1.mysql 的 connector/j 的驱动:

> PHP源码: > > * * * > >
>
> $ setenv CLASSPATH / path / to / mysql - connector - java -[ version ]- bin . jar : $CLASSPATH
>
> Class. forName ( "com.mysql.jdbc.Driver" ). newInstance ();
>
> jdbc : mysql : //[host][,failoverhost...][

1<img alt="" border="0" src="images/smilies/tongue.gif"/>

ort]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
>
>
> &gt; &gt; * * * &gt; &gt;

resin configuration:

> PHP源码: &gt; &gt; * * * &gt; &gt;
>
> < database >
>
> < jndi - name > jdbc / mysql

>
> < driver >
>
> < type > com . mysql . jdbc . jdbc2 . optional . MysqlConnectionPoolDataSource >
> < url > jdbc : mysql : //localhost:3306/dbname >
> < user > username >
> < password > password >
> >
> ...
>
> >
>
> &gt; &gt; * * * &gt; &gt;

2.make sure the drivers are here:

> PHP源码: &gt; &gt; * * * &gt; &gt;
>
> $RESIN_HOME / lib / local /
>
>
> &gt; &gt; * * * &gt; &gt;


/**

  • = just a kind of bird! =

  • @machine1: axp 1500+,256MBddr,R9550

  • @machine2: A64 3000+,1GB,120GB

  • @machine3: Palm Zire 72

  • @os: Gentoo Linux/WinXP/FreeBSD

*/


由 kenwee 在 01-09-2004 23:16 发表:


不错。其实我在配置JSP服务的时候先指定CLASSPATH目录,一般都是JAVA_HOME/lib目录下,不太推荐用WEB-INF/lib目录。

呵呵,因为我不会JSP,所以能帮你的只有这么多了,JDBC接口我了解的也不是很多。不过通常Application Server带的驱动有比较好的兼容性,但是速度就很一般。如果有了什么新的发现再告诉你了。


屏幕守望者……


由 kensin 在 01-10-2004 17:31 发表:


再次感谢各位兄弟的提示。

我对resin是如何与数据库接口程序结合这一块的原理很不清楚,所以对于遇到的问题始终没找到有效的分析方法。

将我的一些配置情况和配置文件详细的贴出来,请各位指点:

resin的版本是2.1.10,安装在/usr/resin-2.1.0/

jdk的版本是1.4.2,安装在/usr/java/j2sdk1.4.2/

MySQL Connector/J 的版本是3.1.0 Alpha,安装在/usr/mysql-connector-java-3.1.0-alpha

网站程序的主目录是:/var/www/wjk,是用JSP写的。

在安装了mysql connector/j后,我将/usr/mysql-connector-java-3.1.0-alpha/mysql-connector-java-3.1.0-alpha-bin.jar文件拷贝到了网站主目录下,即:/var/www/wjk/WEB-INF/lib目录下。

原本是想在/etc/profile中,通过CLASSPATH来指定这个mysql driver文件,但是发现不行,所以才采用了上述的方法。

相关配置文件的内容如下:

1、/etc/profile

PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

JAVA_HOME=/usr/java/j2sdk1.4.2

RESIN_HOME=/usr/resin-2.1.10

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$RESIN_HOME/lib

export JAVA_HOME RESIN_HOME CLASSPATH

2、resin.conf

 1<caucho.com>
 2<java compiler="internal" compiler-args=""></java>
 3<jsp precompile="true" recompile-on-error="true" static-encoding="true"></jsp>
 4<thread-max>256</thread-max>
 5<thread-keepalive id="100"></thread-keepalive>
 6<request-timeout id="30s"></request-timeout>
 7<accept-buffer-size id="256"></accept-buffer-size>
 8<thread-min id="5"></thread-min>
 9<ignore-client-disconnect>true</ignore-client-disconnect>
10<cache dir="cache" entries="81920" size="10240"></cache>
11<cache-mapping expires="15m" url-pattern="/"></cache-mapping>
12<welcome-file-list>index.jsp </welcome-file-list>
13<http-server>   
14  
15&lt;http po</http-server></caucho.com>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus