`
superxielei
  • 浏览: 267116 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

ehcache升级检查带来的connect timed out

    博客分类:
  • java
阅读更多


这几天在开发过程中,启动项目会出现一个Timeout的异常

java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
at net.sf.ehcache.util.UpdateChecker.getUpdateProperties(UpdateChecker.java:108)
at net.sf.ehcache.util.UpdateChecker.doCheck(UpdateChecker.java:72)
at net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:60)
at net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:51)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)

从异常名称(SocketTimeoutException)来看是一个socket连接超时,应该是连接其他资源出现的异常。
接着看堆栈的信息,发现有sun.net.www.http.HttpClient,定位这是一个http请求。但是程序在启动的时候并没有去连接任何外部的http资源啊?奇怪了~继续向下看看会不会有新的发现吧。
果然有发现,ehcache,可爱的缓存怎么还会去请求http资源呢?程序使用RMI方式做ehcache集群配置,不应该会有http请求啊,先不想了,跟到源码里看一下吧。
run->checkForUpdate->doCheck都没什么内容,跟着逻辑就进到了net.sf.ehcache.util.UpdateChecker.getUpdateProperties(其实这个类名已经说明这是在做更新检查了,我竟然忽略的看类名)

private Properties getUpdateProperties(URL updateUrl) throws IOException {
        URLConnection connection = updateUrl.openConnection();
        connection.setConnectTimeout(CONNECT_TIMEOUT);
        InputStream in = connection.getInputStream();
        try {
            Properties props = new Properties();
            props.load(connection.getInputStream());
            return props;
        } finally {
            if (in != null) {
                in.close();
            }
        }
    }

 
扔断点,启动调试观察updateUrl(我竟然还没意识到这是在检测更新)

http://www.terracotta.org/kit/reflector?pageID=update.properties&kitID=ehcache.default&id=-1062731420&os-name=Windows+7&jvm-name=Java+HotSpot%28TM%29+Client+VM&jvm-version=1.6.0_18&platform=x86&tc-version=2.6.3&tc-product=Ehcache+Core+2.6.3&source=Ehcache+Core&uptime-secs=1&patch=UNKNOWN

这么长的地址,但是看这个域名挺眼熟,好像是......没再想了,先把地方放到浏览器上看看是什么

## Top level keys
# general.notice = This notice should rarely, if ever, be used as everyone running ehcache will see it

## 2.6.5 -- latest release
2.6.5.updates = 
2.6.5.notices = This is the latest GA release.
2.6.5.release-notes = http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.6


## 2.6.3
2.6.3.updates = 2.6.5
2.6.3.notices = This is the latest GA release.
2.6.3.release-notes = http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.6

## 2.6.2
2.6.2.updates = 2.6.5
2.6.2.notices = We recommend upgrading to 2.6.5, our latest GA release
2.6.2.release-notes = http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.6


## 2.6.0
2.6.0.updates = 2.6.5
2.6.0.notices = We recommend upgrading to 2.6.5, our latest GA release
2.6.0.release-notes = http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.5


## 2.5.7
2.5.7.updates = 2.6.5
2.5.7.notices = We recommend upgrading to 2.6.5, our latest GA release
2.5.7.release-notes = http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.5

2.5.6-SNAPSHOT.updates = 2.6.5

## 2.5.6
2.5.6.updates = 2.6.5
2.5.6.notices = We recommend upgrading to 2.6.5, our latest GA release
2.5.6.release-notes = http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.5

 
这是什么东西?好像是版本更新~版本更新?版本更新!竟然是版本更新!打开ehcache.xml检查一下

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         updateCheck="true" monitoring="autodetect" dynamicConfig="true">

竟然真的启动了检查更新,折腾了一大圈,竟然是ehcache在检查版本更新,可能是我浏览器挂了goagent的原因,在浏览器里访问时正常的,但是在程序中确无法访问,所以就出现了Timeout的异常。


把updateCheck改成false就解决了。(写了这么一大堆就最后一句话有用。^_^)

 

分享到:
评论
1 楼 liuwuhen 2015-07-28  
  

相关推荐

    hibernate升级到3.2带来EHCache的问题

    NULL 博文链接:https://yongtree.iteye.com/blog/272293

    ehcache

    Ehcache 的升级与优化 随着技术的发展,Ehcache 也经历了多个版本的迭代,如 Ehcache 2.x 和 Ehcache 3.x。Ehcache 3.x 引入了 Java Caching System (JSR 107) 规范,提供了更现代的 API 和更好的性能。 优化 ...

    ehcache监控工具ehcache-monitor-kit-1.0.3

    1.解压缩到目录下,复制ehcache-monitor-kit-1.0.0\lib\ehcache-probe-1.0.0.jar包到application的web-inf/lib目录下 2.将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名...

    ehcache 测试 反射类 例子

    此外,我们可以通过反射来模拟不同的场景,比如在测试中更改对象的状态,然后检查Ehcache如何根据新的状态处理缓存。 在提供的文件列表中,我们看到几个关键的项目: 1. `.classpath` 和 `.project` 文件是Eclipse...

    ehcache-core-2.6.11.jar

    如果2.5.0版本的代码运行良好,且升级带来的新功能不是必需的,那么保持现状可能是最佳选择。否则,需要进行代码审查和测试,以确保新版本的Ehcache与应用程序的其他部分兼容。 总结来说,Ehcache-core的这三个版本...

    Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.zip)

    在执行SQL后,是如何将结果存入Ehcache的,以及在后续的查询中,如何检查Ehcache并返回缓存的结果。 4. **Key生成策略**:关键在于如何生成唯一的缓存键,通常基于SQL语句和参数,以确保相同条件的查询能命中同一...

    ehcache.xsd_ehcache.xml代码提示.rar

    【标题解析】:“ehcache.xsd_ehcache.xml代码提示.rar”这个标题表明这是一个与Ehcache缓存系统相关的资源包,主要目的是为Ehcache的配置文件ehcache.xml提供代码提示功能。Ehcache是一个广泛使用的开源Java缓存...

    Ehcache 简单的监控

    Ehcache是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,以提高数据访问的速度和效率。本文将深入探讨Ehcache的简单监控,帮助开发者更好地理解其工作原理和性能状态。 首先,了解Ehcache的核心...

    Ehcache_Hello

    **Ehcache简介** Ehcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序性能,通过存储数据副本以减少对数据库的访问。Ehcache最初由Tomi Tirro设计,现在是Terracotta公司的产品,是Java世界中常用的二级...

    ehcache.jar及源码

    Ehcache是一个广泛使用的开源Java缓存库,它为应用程序提供了高效的内存管理和数据缓存功能。Ehcache的核心目标是提高应用性能,通过将频繁访问的数据存储在内存中,减少对数据库的依赖,从而降低系统负载。这次我们...

    ehcache-3.3.1-API文档-中文版.zip

    赠送jar包:ehcache-3.3.1.jar; 赠送原API文档:ehcache-3.3.1-javadoc.jar; 赠送源代码:ehcache-3.3.1-sources.jar; 赠送Maven依赖信息文件:ehcache-3.3.1.pom; 包含翻译后的API文档:ehcache-3.3.1-javadoc-...

    ehcache配置使用详解

    3. **多种缓存策略**:ehcache支持LRU(Least Recently Used)、LFU(Least Frequently Used)和FIFO(First In First Out)等多种缓存淘汰策略,满足不同场景下的需求。 4. **二级缓存**:ehcache不仅提供内存缓存...

    EhCache开启gzip压缩功能

    此外,压缩也会带来一定的CPU开销,因此需要权衡压缩带来的带宽节省与CPU资源的消耗。 综上所述,EhCache开启gzip压缩功能是优化Web应用性能的有效手段,能够减少网络延迟,提高用户体验。同时,正确地配置和使用...

    hibernate+ehcache

    【标题】:“Hibernate + Ehcache 整合使用详解” 【描述】:“Hibernate 是一款流行的 Java 持久层框架,而 Ehcache 是一个高效的分布式内存缓存系统。将两者结合,能够极大地提升应用的性能,减少数据库的负载,...

    Ehcache分布式缓存与其在SpringBoot应用

    Ehcache是一个高性能的、基于Java的进程内缓存解决方案,它被广泛应用于各种Java应用程序,包括Java EE和轻量级容器。Ehcache的主要优势在于它的快速响应、易用性和丰富的缓存策略。它提供了两种级别的缓存存储:...

    Ehcache通过Jgroups做集群

    Ehcache是一款高效、流行的Java缓存库,它允许应用程序快速访问经常使用的数据,从而提高性能和响应速度。在分布式环境中,为了实现数据共享和高可用性,Ehcache提供了集群功能。而Jgroups则是Java中一个强大的集群...

    ehcache2.6.5.rar

    Ehcache是一个开源的Java缓存库,广泛用于提高应用程序的性能和响应速度,通过存储经常访问的数据在内存中,避免了频繁的数据库查询。它最初由Tomi Triebel开发,现在是Terracotta公司的产品。在版本2.6.5中,...

    Ehcache(一): Spring + Ehcache开场白

    Ehcache是一款高性能、易用且广泛应用于Java环境中的分布式缓存系统,它极大地提高了应用程序的性能和响应速度。在Spring框架中集成Ehcache,能够实现数据的快速访问,减轻数据库的压力,优化整体系统架构。本文将...

    mybatis ehcache 1.0 ehcache.xsd 提示文件

    本篇文章将详细探讨MyBatis与Ehcache的集成以及`ehcache.xsd`和`ehcache.xml`这两个配置文件在其中的作用。 首先,Ehcache是一个开源的、高性能的Java缓存库,它能够极大地减少对数据库的访问,提高应用程序的响应...

    EHCache.jar和文档

    4. **缓存策略**:EHCache提供多种缓存策略,如LRU(Least Recently Used)最近最少使用、LFU(Least Frequently Used)最不经常使用、FIFO(First In First Out)先进先出等,可以根据业务需求选择合适的策略。...

Global site tag (gtag.js) - Google Analytics