net.sf.ehcache.util.UpdateChecker

解决问题:

net.sf.ehcache.util.UpdateChecker:98] New update(s) found: 2.4.7 [http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.4]. Please check http://ehcache.org for the latest version.

因为项目用到了ehcache,所以tomcat每次启动日志就打印net.sf.ehcache.util.UpdateChecker doCheck

以前也没有特别留意,今天在启动 Tomcat 的时候,发现了下面这段输出的信息:

2014-11-12 11:00:11 [INFO ] [net.sf.ehcache.util.UpdateChecker:98] New update(s) found: 2.4.7 [http://www.terracotta.org/confluence/display/release/Release+Notes+Ehcache+Core+2.4]. Please check http://ehcache.org for the latest version

分析才知道,EhCache在每次启动的时候都要连接到 ehcache 网站上去检查新版本,所以谁在用

ehcache,他们可是一目了然啊。

解决问题,修改配置,关闭更新检测:
打开 ehcache.xml 将第一行 <ehcache> 的属性 updateCheck 改为false,如下:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="false">

源码:

public class UpdateChecker extends TimerTask
{
  private static final Logger LOG = LoggerFactory.getLogger(UpdateChecker.class.getName());
  private static final long MILLIS_PER_SECOND = 1000L;
  private static final int CONNECT_TIMEOUT = 3000;
  private static final String NOT_AVAILABLE = "UNKNOWN";
  private static final String UPDATE_CHECK_URL = "http://www.terracotta.org/kit/reflector?kitID=ehcache.default&pageID=update.properties";
  private static final long START_TIME = System.currentTimeMillis();

  public void run()
  {
    checkForUpdate();
  }

  public void checkForUpdate()
  {
    try
    {
      if (!(Boolean.getBoolean("net.sf.ehcache.skipUpdateCheck")))
        doCheck();
    }
    catch (Throwable t) {
      LOG.debug("Update check failed: " + t.toString());
    }
  }

  private void doCheck() throws IOException {
    LOG.debug("Checking for update...");
    URL updateUrl = buildUpdateCheckUrl();
    Properties updateProps = getUpdateProperties(updateUrl);
    String currentVersion = new ProductInfo().getVersion();
    String propVal = updateProps.getProperty("general.notice");
    if (notBlank(propVal))
      LOG.info(propVal);

    propVal = updateProps.getProperty(currentVersion + ".notice");
    if (notBlank(propVal))
      LOG.info(propVal);

    propVal = updateProps.getProperty(currentVersion + ".updates");
    if (notBlank(propVal)) {
      StringBuilder sb = new StringBuilder();
      String[] newVersions = propVal.split(",");
      for (int i = 0; i < newVersions.length; ++i) {
        String newVersion = newVersions[i].trim();
        if (i > 0)
          sb.append(", ");

        sb.append(newVersion);
        propVal = updateProps.getProperty(newVersion + ".release-notes");
        if (notBlank(propVal)) {
          sb.append(" [");
          sb.append(propVal);
          sb.append("]");
        }
      }
      if (sb.length() > 0)
        LOG.info("New update(s) found: " + sb.toString() + ". Please check http://ehcache.org for the latest version.");
    }
  }

  private Properties getUpdateProperties(URL updateUrl) throws IOException
  {
    URLConnection connection = updateUrl.openConnection();
    connection.setConnectTimeout(3000);
    InputStream in = connection.getInputStream();
    try {
      Properties props = new Properties();
      props.load(connection.getInputStream());
      Properties localProperties1 = props;

      return localProperties1;
    }
    finally
    {
      if (in != null)
        in.close();
    }
  }

  private URL buildUpdateCheckUrl() throws MalformedURLException, UnsupportedEncodingException
  {
    String url = System.getProperty("ehcache.update-check.url", "http://www.terracotta.org/kit/reflector?kitID=ehcache.default&pageID=update.properties");
    String connector = (url.indexOf(63) > 0) ? "&" : "?";
    return new URL(url + connector + buildParamsString());
  }

  private String buildParamsString() throws UnsupportedEncodingException {
    ProductInfo productInfo = new ProductInfo();
    StringBuilder sb = new StringBuilder();
    sb.append("id=");
    sb.append(getClientId());
    sb.append("&os-name=");
    sb.append(urlEncode(getProperty("os.name")));
    sb.append("&jvm-name=");
    sb.append(urlEncode(getProperty("java.vm.name")));
    sb.append("&jvm-version=");
    sb.append(urlEncode(getProperty("java.version")));
    sb.append("&platform=");
    sb.append(urlEncode(getProperty("os.arch")));
    sb.append("&tc-version=");
    sb.append("UNKNOWN");
    sb.append("&tc-product=");
    sb.append(urlEncode(productInfo.getName() + " " + productInfo.getVersion()));
    sb.append("&source=");
    sb.append(urlEncode(productInfo.getName()));
    sb.append("&uptime-secs=");
    sb.append(getUptimeInSeconds());
    sb.append("&patch=");
    sb.append(urlEncode(productInfo.getPatchLevel()));
    return sb.toString();
  }

  private long getUptimeInSeconds() {
    long uptime = System.currentTimeMillis() - START_TIME;
    return ((uptime > -5761795191333715968L) ? uptime / 1000L : -5761795156973977600L);
  }

  private int getClientId() {
    try {
      return InetAddress.getLocalHost().hashCode(); } catch (Throwable t) {
    }
    return 0;
  }

  private String urlEncode(String param) throws UnsupportedEncodingException
  {
    return URLEncoder.encode(param, "UTF-8");
  }

  private String getProperty(String prop) {
    return System.getProperty(prop, "UNKNOWN");
  }

  private boolean notBlank(String s) {
    return ((s != null) && (s.trim().length() > 0));
  }
}
时间: 2024-08-08 07:24:12

net.sf.ehcache.util.UpdateChecker的相关文章

解决:&lt;net.sf.ehcache.util.UpdateChecker&gt; : New update(s) found: 2.6.5

因为项目用到了ehcache,所以tomcat每次启动日志就打印net.sf.ehcache.util.UpdateChecker doCheck 以前也没有特别留意,今天在启动 Tomcat 的时候,发现了下面这段输出的信息: {INFO } [2014-06-30 07:42:10,625] <net.sf.ehcache.util.UpdateChecker> : New update(s) found: 2.6.5 [http://www.terracotta.org/confluen

spring整合ehcache2.5.2缓存异常-- net.sf.ehcache.CacheException

报错如下: The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:

zTree实现地市县三级级联报错(三)

zTree实现地市县三级级联报错(三) 1.详细报错例如以下 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-5-11 22:37:22 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Nat

Hibernate注解开发(未完待续)

1.注解的目的 简化繁琐的ORM映射文件(*.hbm)的配置 2.JPA和hibernate的关系 JPA:java persistence API,JPA注解是JavaEE的标准和规范. 两者的关系可以简单理解为JPA是接口,Hibernate是实现,但是其功能是JPA的超集. Hibernate如何实现与JPA的关系? 通过hibernate-core,hibernate-entitymanager,hibernate-annotation三个组件实现. 程序开发中一般使用JPA注解,便于程

Spring+EhCache缓存实例(详细讲解+源码下载)(转)

一.ehcahe的介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点. 优点: 1. 快速 2. 简单 3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 

Java和Flex整合报错(二)

1.错误原因 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-11-13 23:15:19 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.24 usin

Java和Flex整合报错(三)

1.错误描述 信息: Initializing Spring FrameworkServlet 'mvc' 11-13 23:43:42 INFO [localhost-startStop-1] org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:455) - FrameworkServlet 'mvc': initialization started 11-13 23:43

Java和Flex整合报错(四)

1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-11-14 0:01:38 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.24 using

Dubbo消费端错误: ClassNotFoundException: org.apache.zookeeper.proto.WatcherEvent

出现错误的原因是消费端war没有启动成功, 但是zkClient和Dubbo的对应Thread启动了, web container无法加载对应的类, INFO: Initializing ProtocolHandler ["http-bio-8081"] Jun 01, 2016 9:48:24 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-801