LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1442|回复: 13

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

[复制链接]
发表于 2004-1-7 12:39:49 | 显示全部楼层 |阅读模式
配置的一台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和数据库结合的一些机制。
 楼主| 发表于 2004-1-8 12:26:47 | 显示全部楼层
没有哪位兄弟懂这方面吗?

还是它太过简单?

我已经找了不少的资料,都没有办法,只有向这里的高人请教了
发表于 2004-1-9 00:57:18 | 显示全部楼层
JDBC的驱动有问题。
 楼主| 发表于 2004-1-9 17:28:52 | 显示全部楼层
呵呵,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的日志文件中产生上述的错误日志。
发表于 2004-1-9 17:33:30 | 显示全部楼层
你把 jdbc driver 拷贝到 resin 的 lib 目录下
然后重新启动 resin
 楼主| 发表于 2004-1-9 18:14:00 | 显示全部楼层
谢谢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中的日志照旧。
发表于 2004-1-9 22:23:48 | 显示全部楼层
我希望你可以确认几个事情:
1,resin 本身自带 mysql 的 driver 的,引用方式参照手册。
2,尝试将 jar 加入到 CLASSPATH 里面
3,最好能够将调用驱动程序的代码段贴出来,便于分析问题
一般是 Class.forName()
4,你可以查看 web.xml 和 resin.conf,确信你的虚拟目录中对数据库驱动程序的声明是正确的。

其实 resin 是很容易使用的,不过因为太灵活了,所以在配置上有可能出现冲突。
发表于 2004-1-9 22:33:28 | 显示全部楼层
1.mysql 的 connector/j 的驱动:
[PHP]$ setenv CLASSPATH /path/to/mysql-connector-java-[version]-bin.jarCLASSPATH
Class.forName("com.mysql.jdbc.Driver").newInstance();
jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
[/PHP]

resin configuration:
[PHP]
<database>
  <jndi-name>jdbc/mysql</jndi-name>
  <driver>
    <type>com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource</type>
    <url>jdbc:mysql://localhost:3306/dbname</url>
    <user>username</user>
    <password>password</password>
  </driver>
  ...
</database>
[/PHP]

2.make sure the drivers are here: [PHP]$RESIN_HOME/lib/local/[/PHP]
发表于 2004-1-9 23:16:09 | 显示全部楼层
不错。其实我在配置JSP服务的时候先指定CLASSPATH目录,一般都是JAVA_HOME/lib目录下,不太推荐用WEB-INF/lib目录。
呵呵,因为我不会JSP,所以能帮你的只有这么多了,JDBC接口我了解的也不是很多。不过通常Application Server带的驱动有比较好的兼容性,但是速度就很一般。如果有了什么新的发现再告诉你了。
 楼主| 发表于 2004-1-10 17:31:25 | 显示全部楼层
再次感谢各位兄弟的提示。

我对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=$PATHJAVA_HOME/binJAVA_HOME/jre/bin
JAVA_HOME=/usr/java/j2sdk1.4.2
RESIN_HOME=/usr/resin-2.1.10
CLASSPATH=.JAVA_HOME/libJAVA_HOME/jre/libRESIN_HOME/lib

export JAVA_HOME RESIN_HOME CLASSPATH

2、resin.conf

<caucho.com>
   <java compiler="internal" compiler-args=""/>

  <jsp precompile='true' static-encoding='true' recompile-on-error='true'/>

  <thread-max>256</thread-max>

  <thread-keepalive id='100'/>

  <request-timeout id='30s'/>

  <accept-buffer-size id='256'/>

  <thread-min id='5'/>

  <ignore-client-disconnect>true</ignore-client-disconnect>

  <cache dir='cache' size='10240' entries='81920'/>

  <cache-mapping url-pattern='/' expires='15m'/>

  <welcome-file-list>index.jsp </welcome-file-list>




<http-server>
    <http port='8080'/>
    <srun host='localhost' port='6802'/>
<host id='192.168.0.178:82'>
  <app-dir>/var/www/wjk</app-dir>

    <servlet-mapping url-pattern='*.jsp'  servlet-name='com.caucho.jsp.JspServlet'/>

    <classpath id='WEB-INF/classes'  source='WEB-INF/classes'  compile='true'/>

</host>

  </http-server>
</caucho.com>

3、jsp程序中调用驱动程序的部分:

public class MySQL
{
        String host="localhost";
        String user="wjk";
        String pass="wjk";
        String db="wjk";
    public MySQL()
    {
        try
        {
            Class.forName("org.gjt.mm.mysql.Driver");
            connect(host, "3306", db, user, pass);
……

大致就是这样的情况,请各位看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表