今天使用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&useUnicode=true&characterEncoding=utf-8&?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&useUnicode=true&characterEncoding=utf-8&?mysqlEncoding=utf8"
问题找到了,将它改为:
url="jdbc:mysql://127.0.0.1/music
就可以了。
注意2个问题:
1.tomcat 5.5以后的版本的jndi配置方式与之前版本是不同的。
2.在mysql4.1.0版 要设置characterEncoding的值的,如果是5.0版以上的,加不加都是没有关系的!如果加的字符集与创建数据库时指定的字符集不一致,将会容易出现字符集错误问题。
分享到:
相关推荐
在开发过程中,尤其是在非服务器环境下的独立应用程序中使用JNDI时,开发者经常会遇到`NoInitialContextException`异常。这是因为初始化上下文时缺少必要的配置信息。通常情况下,服务器环境会在启动时自动设置这些...
在使用JNDI过程中可能会遇到各种异常,例如: - `AuthenticationException`:当用户尝试访问JNDI资源但未通过身份验证时抛出。 - `CommunicationException`:在网络通信出现问题时抛出。 - `InvalidNameException`...
在使用过程中,可能会遇到各种异常,如通信异常、无法获取初始上下文异常、服务不可用异常等,这些异常通常提示我们需要检查网络连接、配置文件或者指定的类名是否正确。 **定义JNDI服务**涉及服务类名、服务器的...
在进行Java开发时,经常会遇到关于JNDI配置的相关问题。下面将详细介绍JNDI的基本概念、配置方法以及如何在实际开发中应用它来管理数据库连接等资源。 ##### 1. JNDI的基本概念 JNDI是一种用于访问命名和目录服务...
在本教程中,我们将深入探讨如何正确配置和使用JNDI数据源,以及解决配置过程中可能遇到的问题。 首先,理解JNDI数据源的基本概念。JNDI数据源是一个实现了javax.sql.DataSource接口的对象,它负责管理和维护数据库...
**在学习JNDI时,你可能会遇到的几个关键知识点:** 1. **Naming Contexts**:命名上下文是JNDI的核心,它代表了一个命名空间,可以包含其他上下文和对象。 2. **Lookup操作**:通过指定的名字在命名上下文中查找...
在本文中,我们将深入探讨“Tomcat6配置JNDI出错”这一主题,这是一个常见的问题,很多开发者在搭建和配置Java企业级应用时可能会遇到。 JNDI,全称Java Naming and Directory Interface,是Java平台的一个标准接口...
在配置过程中可能会遇到一些问题,以下是一些常见错误及其解决方法: - **错误1**: `org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'` - 解决...
本文旨在解决Java开发者在使用Java Naming and Directory Interface (JNDI)时遇到的问题,特别是那些涉及到EJB(Enterprise JavaBeans)组件查找和访问的过程。对于刚接触EJB技术的新手来说,正确设置并配置JNDI环境...
- **目标**:JNDI旨在解决企业级应用中普遍存在的命名与目录服务问题。它的主要目标包括提供统一的API、支持多种命名和目录服务以及提高应用的可移植性。 - **设计原则**:为了实现上述目标,JNDI采用了灵活的设计...
在配置 Tomcat JNDI 时,可能会遇到一些常见的问题,例如数据源无法连接、JNDI 名称不正确等。解决这些问题的方法包括: * 检查数据源 URL 是否正确 * 检查 JNDI 名称是否正确 * 检查 JDBC 驱动类是否正确 * 检查...
如果遇到问题,检查日志输出,或者使用JBoss提供的管理工具(如`jconsole`或`jboss-cli.sh`)进行诊断。 此外,JNDI还支持层次化的命名空间,这意味着你可以创建子命名空间,以更好地组织和管理你的资源。例如,你...
如果遇到问题,可以查看WebSphere的日志输出或使用管理控制台的诊断工具进行调试。 通过上述步骤,你可以在WebSphere上成功发布并运行基于JNDI的应用。记住,WebSphere的配置和管理是一个复杂的过程,需要对J2EE...
然而,随着 Oracle 12c 的发布及其对安全性和性能的改进,原有的连接方式可能不再适用或遇到兼容性问题。在这种情况下,使用 JNDI 连接方式成为了一种可行且推荐的选择。 #### 二、准备工作 1. **安装 Kettler ...
在这个测试案例中,开发者遇到了一个问题,即在使用Maven构建的JNDI环境中,通过IntelliJ IDEA的Tomcat 7插件运行应用时,出现了无法连接到`context.xml`配置文件的错误。 首先,我们需要了解JNDI的基本概念。JNDI...
- **技术支持**:PTC提供技术支持服务,帮助客户解决在使用JNDI Adapter过程中遇到的问题和技术挑战。 #### 七、案例研究与最佳实践 - **案例研究**:通过分析实际项目中的应用案例,可以更好地理解JNDI Adapter...
在使用JNDI时可能会遇到一些异常,如: - `AuthenticationException`:身份验证失败。 - `CommunicationException`:通信问题,可能与服务器的连接中断。 - `InvalidNameException`:名称无效,不符合命名规则。 - ...
如果遇到问题,可以查阅这个文件来获得帮助。 总结一下,Tomcat 6.0通过JNDI连接数据库的步骤包括:配置`server.xml`中的数据源、在应用的`web.xml`中声明资源引用,以及在Java代码中使用JNDI查找来获取数据库连接...
### 在WebLogic 9.1下配置JNDI数据源详解 ...此外,遇到问题时,仔细检查每一步操作,并参考官方文档或社区支持获取帮助。正确配置的数据源不仅能够提高应用程序的性能,还能简化后续的维护工作。