转自:http://www.360doc.com/content/08/0524/18/49194_1281450.shtml
在我进行的技术支持的项目中,有不少情况下,防火墙的设置会给J2EE应用带来一些麻烦。你遇上过吗?
通常的Web应用都是无状态的连接,一般来说对于防火墙是非常友好的。但是,大多数JavaEE应用服务器都有连接池的概念。为了提高性能,应用服 务器会预先打开并保持一些和后台数据库服务器、LDAP服务器或其他服务器的连接。这些连接通常会将TCP的连接永久保持,除非发生了意外的情况。
我有几个项目发生的问题都是应用服务器和数据库之间由于安全级别的问题,设有不同的防火墙。在系统运行的时候,偶尔会发生数据库连接无法获得的错误(在系统很闲的时候)。客户怀疑应用服务器的不稳定性。
通过各种工具的分析(snoop),发现当应用服务器的数据库连接出现问题的时候,数据库这端没有任何问题,所有的Session连接都在,但是从应用服务器发过来的TCP请求没有到达数据库服务器。是中间的防火墙阻断了数据库的连接。在一个空闲的TCP连接上,可以很长时间没有任何的数据流,许多TCP/IP的初学者都对此感到惊奇。因此当数据库连接长时间不用(这种情况很常见,例如连接池中有10个连接,由于负载很小,一直只用到前几个)。一般来说,防火墙软件都会定时检查空闲的连接,并将它们阻断,来保证一些异常的中断连接被清除。
这样,我们对数 据库连接问题的原因找到了,由于空闲的数据库连接长时间不用被防火墙给阻断是主要的原因。被阻断了的数据库连接在使用的时候不会自动重新连接吗?大多数应 用服务器所使用的专业的数据库连接池都会有自动重新连接来解决这个问题。也有一些客户使用自己的连接池,或者一些简单的开源的方案,没有自动重联的功能, 导致应用不可用。
就算有的连接池能够自动重连中断的连接,也不会时时刻刻都去检查这些在连接池中的连接是否被可用。因为这种检查非常消耗时间,还会影响应用,因此会每隔几分钟检查一次。在间隔时间内发生的连接中断仍然会引起系统的错误。
另外的解决方案 就是从数据库服务器端进行配置,保证连接的畅通。例如在Oracle中可以设置SQLNET.EXPIRE_TIME小于防火墙的中断时间,就能够是 Oracle的数据库连接在没有数据交换的情况下,由服务器端自动发出探测的数据报,使得防火墙不再认为数据库连接是空闲的连接。
分享到:
相关推荐
**Druid数据库连接池详细属性配置** Druid是阿里巴巴开源的一款高效、强大的数据库连接池组件,它在性能、监控和扩展性方面表现出色。Druid不仅是一个连接池,还包含了SQL解析器、日志监控、SQL执行效率分析等功能...
Druid数据库连接池是一款高效、功能强大且高度可扩展的数据库连接池组件,由阿里巴巴公司开源。在Java应用程序中,数据库连接池是管理数据库连接的重要工具,它可以显著提高应用的性能和资源利用率。Druid因其出色的...
MySQL数据库连接异常通常涉及多个方面,包括网络问题、配置错误、权限问题、数据库服务状态等。以下是对这些异常的详细分析和解决策略: 1. **网络问题**: - `CommunicationsException` 提示通信链接失败,可能是...
确保正确配置服务器的防火墙规则,允许来自Android应用的连接。 5. **数据库操作**:服务器端的Web服务方法将执行具体的SQL语句(INSERT、UPDATE、DELETE等)。注意处理事务,确保数据的一致性。同时,应考虑SQL...
在Android中进行数据库操作时,为了避免阻塞UI线程,通常需要采用异步处理的方式。常用的方法包括: - **AsyncTask**: 一个轻量级的后台任务处理框架。 - **Handler/Looper**: 通过消息队列机制实现异步通信。 - **...
在Java应用程序中,数据库连接池是用于管理数据库连接的关键组件,它负责创建、分配、回收和管理数据库连接,从而提高数据库访问性能,节省系统资源。Druid因其优秀的监控能力、稳定性和性能而广受开发者欢迎。 在...
综上所述,Android通过JDBC访问MySQL数据库涉及网络通信、数据库连接、SQL操作等多个方面,需要考虑到性能、安全性和平台限制。在实际开发中,根据项目需求和场景选择合适的解决方案,并遵循最佳实践,以确保应用的...
数据库的安全性至关重要,包括用户权限管理、加密、防火墙配置和安全审计等方面。 总的来说,数据库维护工作手册提供了全面的指导,旨在帮助数据库管理员有效管理数据库环境,预防和解决可能出现的问题,从而确保...
- 使用非阻塞I/O多路复用技术(epoll或kqueue),高效处理多个连接请求。 9. **模块系统(Modules System)**: - 尽管在Redis 2.4.6中尚未引入,但后续版本引入的模块系统允许扩展新的数据类型和功能。 10. **...
- Sybase:Sybase 在 Linux 平台上提供了企业级数据库,通过 SQL Anywhere 等移动解决方案,提供跨平台连接的开放接口库,支持复杂应用开发。 【发展趋势】 随着关系数据库技术的不断发展,Linux 平台上的数据库...
- 在Android端进行数据库操作时,应确保所有数据库交互都在子线程中进行,避免阻塞主线程导致UI卡顿。 - 如果使用的是动态IP地址(如无线网络下的IP地址),每次重新连接网络后都需要更新连接字符串中的IP地址。 - ...
数据库安全管理是确保数据库正常运行的关键,其内容包括保护数据库系统、数据库服务器、数据和网络连接的安全,防止数据泄露、篡改或破坏。为实现这一目标,应当将数据库安全管理整合到统一的数据库自动化运维管理...
- 无法连接数据库可能由于数据库服务未启动,防火墙阻塞,或登录凭据错误。 5. **逻辑推理与问题解决**: - 示例问题:找出轻球,展示了解决问题的策略,这在实际工作中可能表示解决问题的能力。 6. **数据库...
3. **防火墙设置**:检查服务器或本地系统的防火墙设置,确保3306端口未被阻塞。 4. **驱动版本兼容性**:确保使用的MySQL JDBC驱动与MySQL服务器版本兼容。 通过上述步骤,您可以顺利完成Tomcat与MySQL之间的连接...
在后续的5.5和5.6版本中,引入了并行复制、增强的线程池、SQL防火墙等功能,显著提升了数据库的性能和稳定性。在性能优化方面,AliSQL进行了40多个bug的定位和修复,并将这些修复回馈给了开源社区,累计增加了41个新...
JDK与数据库连接问题:** Eclipse是一款流行的集成开发环境(IDE),用于编写Java应用程序。在尝试连接数据库时,可能会遇到驱动加载成功但连接失败的问题。这通常由于以下原因: - **兼容性问题**:不同的JDBC驱动...
- 2014年后,AliSQL 5.6版本增加了增强的线程池、更强大的热点补丁和SQL防火墙等特性,显著提升了数据库处理能力。 2. **性能优化** - AliSQL在40多个bug定位和修复的基础上,将所有改进回馈给了开源社区,同时...
服务器、存储、数据库巡检是IT运维中的关键环节,旨在确保系统的稳定运行,及时发现并解决潜在问题。以下是对这个主题的详细说明: 一、服务器巡检 服务器巡检主要涉及以下几个方面: 1. **硬件状态检查**:包括...
这个错误通常意味着客户端无法在指定时间内与服务器建立连接,可能是由于网络阻塞、服务器未响应或者配置不正确等原因造成的。在本文中,我们将针对这个问题提供一系列解决方案。 首先,我们需要确认的是SQL Server...
4. **记录通信内容**:题目提到将通信内容存储在数据库中,这需要数据库连接和SQL操作。可以使用JDBC(Java Database Connectivity)API来与各种类型的数据库交互。创建数据库连接,执行插入语句将接收到的数据存储...