`
rubylover
  • 浏览: 17078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类

使用jndi遇到的一些问题

阅读更多
今天使用JNDI时遇到了一些问题,现把它写出来,方便以后学习。环境:Tomcat 5.5,mysql5.0,jdk1.6,spring,struts,hibernate。

application-db.xml文件中dataSource开始采用的是commons-dbcp连接池方式,改成JNDI方式,修改如下:
1.修改application-db.xml,改为JNDI方式
<bean id="dataSource"
	class="org.springframework.jndi.JndiObjectFactoryBean"
	destroy-method="close">
  <property name="jndiName">
    <value>java:comp/env/jdbc/music</value>
  </property>
</bean>

2.将commons-dbcp.jar和mysql-connector-java-5.0.4-bin.jar拷贝到common/lib/下。
3.修改conf/server.xml文件。
运行失败。错误提示:Cannot create JDBC driver of class '' for connect URL 'null'
搜索发现原来自己server.xml配置文件有问题。
  <Context path="/Music" docBase="C:\Tomcat 5.5\webapps\Music"
   debug="5" reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"    prefix="localhost_MysqlTest_log." suffix=".txt" timestamp="true"/>
    <Resource name="jdbc/music"  auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/music">
      <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
	<name>maxActive</name>
	<value>100</value>
      </parameter>
      <parameter>
	<name>maxIdle</name>
	<value>30</value>
       </parameter>
       <parameter>
	<name>maxWait</name>
	<value>5000</value>
       </parameter>
       <parameter>
	<name>username</name>
	<value>root</value>
       </parameter>
       <parameter>
	<name>password</name>
	<value>root</value>
       </parameter>
       <parameter>
	<name>driverClassName</name>
	<value>org.gjt.mm.mysql.Driver</value>
       </parameter>
       <parameter>
	<name>url</name>
	<value>jdbc:mysql://localhost:3306/music</value>
       </parameter>
     </ResourceParams>
  </Context>


Tomcat 5.5以后应该写成
<Context path="/Music" >   
  <Resource 
   name="jdbc/music" 
   type="javax.sql.DataSource"
   password="root"
   driverClassName="com.mysql.jdbc.Driver"
   maxIdle="2"
   maxWait="5000"
   username="root"
    url="jdbc:mysql://127.0.0.1/musicautoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;?mysqlEncoding=utf8"
  maxActive="4"/>


重新启动。获取数据连接正常,可以登录系统。
但是在做插入操作时有问题了:Data truncation: Data too long for column 'NAME' at row 1。

字符集合错误,再看server.xml中的配置:
url="jdbc:mysql://127.0.0.1/music?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;?mysqlEncoding=utf8"


问题找到了,将它改为:
url="jdbc:mysql://127.0.0.1/music
就可以了。

注意2个问题:
1.tomcat 5.5以后的版本的jndi配置方式与之前版本是不同的。
2.在mysql4.1.0版 要设置characterEncoding的值的,如果是5.0版以上的,加不加都是没有关系的!如果加的字符集与创建数据库时指定的字符集不一致,将会容易出现字符集错误问题。
分享到:
评论

相关推荐

    JNDI配置原理详解.doc

    在开发过程中,尤其是在非服务器环境下的独立应用程序中使用JNDI时,开发者经常会遇到`NoInitialContextException`异常。这是因为初始化上下文时缺少必要的配置信息。通常情况下,服务器环境会在启动时自动设置这些...

    jndi简明教程

    在使用JNDI过程中可能会遇到各种异常,例如: - `AuthenticationException`:当用户尝试访问JNDI资源但未通过身份验证时抛出。 - `CommunicationException`:在网络通信出现问题时抛出。 - `InvalidNameException`...

    JNDI 命名和目录服务

    在使用过程中,可能会遇到各种异常,如通信异常、无法获取初始上下文异常、服务不可用异常等,这些异常通常提示我们需要检查网络连接、配置文件或者指定的类名是否正确。 **定义JNDI服务**涉及服务类名、服务器的...

    java JNDI总结

    在进行Java开发时,经常会遇到关于JNDI配置的相关问题。下面将详细介绍JNDI的基本概念、配置方法以及如何在实际开发中应用它来管理数据库连接等资源。 ##### 1. JNDI的基本概念 JNDI是一种用于访问命名和目录服务...

    jndi数据源的连接方法

    在本教程中,我们将深入探讨如何正确配置和使用JNDI数据源,以及解决配置过程中可能遇到的问题。 首先,理解JNDI数据源的基本概念。JNDI数据源是一个实现了javax.sql.DataSource接口的对象,它负责管理和维护数据库...

    JNDI.rar_JINI jndi_JNDI相关书籍_jndi

    **在学习JNDI时,你可能会遇到的几个关键知识点:** 1. **Naming Contexts**:命名上下文是JNDI的核心,它代表了一个命名空间,可以包含其他上下文和对象。 2. **Lookup操作**:通过指定的名字在命名上下文中查找...

    Tomcat6配置JNDI出错

    在本文中,我们将深入探讨“Tomcat6配置JNDI出错”这一主题,这是一个常见的问题,很多开发者在搭建和配置Java企业级应用时可能会遇到。 JNDI,全称Java Naming and Directory Interface,是Java平台的一个标准接口...

    tomcat6中配置JNDI方法

    在配置过程中可能会遇到一些问题,以下是一些常见错误及其解决方法: - **错误1**: `org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'` - 解决...

    走出 JNDI 迷宫.pdf

    本文旨在解决Java开发者在使用Java Naming and Directory Interface (JNDI)时遇到的问题,特别是那些涉及到EJB(Enterprise JavaBeans)组件查找和访问的过程。对于刚接触EJB技术的新手来说,正确设置并配置JNDI环境...

    jndi jndi jndi

    - **目标**:JNDI旨在解决企业级应用中普遍存在的命名与目录服务问题。它的主要目标包括提供统一的API、支持多种命名和目录服务以及提高应用的可移植性。 - **设计原则**:为了实现上述目标,JNDI采用了灵活的设计...

    Tomcat JNDI配置

    在配置 Tomcat JNDI 时,可能会遇到一些常见的问题,例如数据源无法连接、JNDI 名称不正确等。解决这些问题的方法包括: * 检查数据源 URL 是否正确 * 检查 JNDI 名称是否正确 * 检查 JDBC 驱动类是否正确 * 检查...

    jboss配置 jndi

    如果遇到问题,检查日志输出,或者使用JBoss提供的管理工具(如`jconsole`或`jboss-cli.sh`)进行诊断。 此外,JNDI还支持层次化的命名空间,这意味着你可以创建子命名空间,以更好地组织和管理你的资源。例如,你...

    websphere上发布基于jndi的应用

    如果遇到问题,可以查看WebSphere的日志输出或使用管理控制台的诊断工具进行调试。 通过上述步骤,你可以在WebSphere上成功发布并运行基于JNDI的应用。记住,WebSphere的配置和管理是一个复杂的过程,需要对J2EE...

    kettler连接oracle 12c数据库(目前只能用JNDI)

    然而,随着 Oracle 12c 的发布及其对安全性和性能的改进,原有的连接方式可能不再适用或遇到兼容性问题。在这种情况下,使用 JNDI 连接方式成为了一种可行且推荐的选择。 #### 二、准备工作 1. **安装 Kettler ...

    JNDI_test测试案例

    在这个测试案例中,开发者遇到了一个问题,即在使用Maven构建的JNDI环境中,通过IntelliJ IDEA的Tomcat 7插件运行应用时,出现了无法连接到`context.xml`配置文件的错误。 首先,我们需要了解JNDI的基本概念。JNDI...

    windchill JNDI guide

    - **技术支持**:PTC提供技术支持服务,帮助客户解决在使用JNDI Adapter过程中遇到的问题和技术挑战。 #### 七、案例研究与最佳实践 - **案例研究**:通过分析实际项目中的应用案例,可以更好地理解JNDI Adapter...

    bea jndi 培训

    在使用JNDI时可能会遇到一些异常,如: - `AuthenticationException`:身份验证失败。 - `CommunicationException`:通信问题,可能与服务器的连接中断。 - `InvalidNameException`:名称无效,不符合命名规则。 - ...

    tomcat6.0JNDI连接数据库.

    如果遇到问题,可以查阅这个文件来获得帮助。 总结一下,Tomcat 6.0通过JNDI连接数据库的步骤包括:配置`server.xml`中的数据源、在应用的`web.xml`中声明资源引用,以及在Java代码中使用JNDI查找来获取数据库连接...

    weblogic9.1下配置JNDI数据源

    ### 在WebLogic 9.1下配置JNDI数据源详解 ...此外,遇到问题时,仔细检查每一步操作,并参考官方文档或社区支持获取帮助。正确配置的数据源不仅能够提高应用程序的性能,还能简化后续的维护工作。

Global site tag (gtag.js) - Google Analytics