posts - 2, comments - 27, trackbacks - 0, articles - 60
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

解决从JBOSS迁移到TOMCAT下的MYSQL乱码问题

Posted on 2009-05-26 21:10 ZhouFeng 阅读(761) 评论(0)  编辑  收藏 所属分类: 原创Web服务器DataBase
弄了老半天,终于是把这个问题给搞定了,一个在JOBSS下跑得很好的程序,因为某些原因需要迁移到TOMCAT下面,可老是出现乱码的问题,情况如下
数据库:MYSQL5.0
数据库编码:UTF-8
所有页面编码都统一用UTF-8
在JBOSS下配置数据源,即修改mysql-ds.xml
<?xml version="1.0" encoding="UTF-8"?>

<datasources>
  
<local-tx-datasource>
    
<jndi-name>app</jndi-name>
    
<connection-url>jdbc:mysql://localhost/app</connection-url>
    
<driver-class>com.mysql.jdbc.Driver</driver-class>
    
<user-name>user</user-name>
    
<password>pwd</password>
  
    
<metadata>
       
<type-mapping>mySQL</type-mapping>
    
</metadata>
  
</local-tx-datasource>
</datasources>
当把应用迁移到TOMCAT6下时,配置好TOMCAT下的数据源(修改contex.xml文件)
<?xml version='1.0' encoding='utf-8'?>

<!-- The contents of this file will be loaded for each web application -->
<Context>

<Resource name="jdbc/app" 
        auth
="Container"
        type
="javax.sql.DataSource"
        driverClassName
="com.mysql.jdbc.Driver"
        url
="jdbc:mysql://localhost/app"
        username
="user"
        password
="pwd"
        removeAbandoned
="true"
        removeAbandonedTimeout
="60"
        logAbandoned
="true"
        maxActive
="700"
        maxIdle
="30"
        maxWait
="10000" />

    
<!-- Default set of monitored resources -->
    
<WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>
因JBOSS和TOMCAT获取数据源连接的方式不同,又修改了获取连接的代码,启动之后是可以运行,页面读取数据正常,但写入数据库时,出现了乱码,我尝试着修改写入数据库的SQL语句的编码,但不管怎么修改都不能正常显示,后来试着通过URL直接修改连接的编码试试,于是把TOMCAT数据源配置里的URL指定为UTF-8的字符集
url="jdbc:mysql://localhost/app?useUnicode=true&amp;characterEncoding=utf-8"
这里再重新启动TOMCAT,运行后,数据写入正常,这个困扰我多天的问题终于解决了,之前没有想到这样的问题,以为JBOSS里也是用的TOMCAT,在JBOSS里配置的数据源都没有在URL里指定编码,没想到单独使用TOMCAT时会出现这样的问题,把今天的处理在这里作个记录,以便以后备查

小结:
当用MYSQL作数据库时,将应用程序从JBOSS迁移到TOMCAT,如果存在乱码的问题,可以考虑修改URL指定字符集


只有注册用户登录后才能发表评论。


网站导航: