在Linux下使用xerces解析器导致tomcatdown机谁遇到过

03-09-02 KillerMan
    

现象1:

平台是:Linux9.0+jdk1.4.1.05+tomcat4.0.6+mysql3.23.57

在windows下调试好地一个系统,朝上述平台切换,每次访问包含xml配置文件载入功能地页面,tomcat就自动down掉。

使用地xerces是最新版本,版本号忘了,当时从官方站点拉的最新。windows下用了三个月左右了一直没问题。

使用其DOMParser

调试定位是在这句话时导致的tomcat中止运行

parser.getDocument()

parser时一个DOMParse。

这个问题有些莫名奇妙,是否xerces也有linux和windows版本之分?照理其是pure java应该不会。

问题2:

mysql在本地使用其自身的client没有问题,但通过jdbc连接时每次都说3306端口,拒绝连接。

linux安装时配置了防火墙,所以推断是这里的问题。

关掉防火墙,reboot,再访问,还是说拒绝连接,还可能是哪里问题?

    

1
robbin
2003-09-02 13:05

随便猜猜:

1、可能是因为Xerces版本的冲突导致,因为Tomcat自身也带有Xerces。

2、很明显是Mysql的用户权限设置的问题。

KillerMan
2003-09-02 16:04

1,

我推测也是xerces的版本冲突,但使用我的覆盖他的,或者使用他的覆盖我的,都不行。还是一执行tomcat就down掉。在那句话上try/catch也没有抛出异常。

2,

使用mysql的本地的client程序登录是没有问题。应该不是权限的问题吧。在本地使用mysql命令用jdbc中指定的用户名和密码可以登录管理jdbc中指定的数据库。

另外,在网上查了一下,有人也遇到过此中问题。他们的解释和robbin一样说是没授权。

但,使用grant all priveleges 我得数据库.* to 命令给那个用户授过权后,flush privileges,重起mysql,再访问还是拒绝连接。

所以,推测不是权限的问题,才会想到安装是配置的防火墙。

但去掉防火墙也不行。所以,才比较郁闷。

iceant
2003-09-02 16:18

嘿嘿~~ 你发现 Linux 的 Java 没有 Windows 的好用了?

我也有这种感觉~~ Solaris 和 Windows 的表现都不错,但是 Linux 下的就有点怪怪的~~

不过你这个的问题应该还是 Tomcat 与你的解析器有冲突。

你在 Windows 下也是使用这样的版本搭配吗? 如果不是,就将 Linux 下的换成 Windows 下的搭配方案试试。

robbin
2003-09-02 16:55

1、我认为不是JDK的问题,我现在已经不用Linux了,但是以前我用过好几年的Linux,上面跑Java,很坚固。我坚持认为是解析器冲突。如果你用的JDK版本是1.4的话,出现冲突的可能最大。

因为Tomcat自己用的解析器是Xerces,好像你的程序用的解析器也是Xerces,但是JDK带的偏偏是一个最烂的解析器Crimson,如果你不修改JDK的设置的话,不管你怎么设CLASSPATH,一定用的是Crimson,而不是Xerces,这是由JVM的ClassLoader的规则确定下来的。这一点如果你把JVM启动参数加上-verbose:class,仔细观察load class的顺序就可以发现。

解决办法,在 JDK/JRE/lib目录下创建一个名叫:jaxp.properties的文件,文件内容如下:

javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
<p>

6Go 1 2 3 4 ... 6 下一页