欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CAT应用启动报错:java.net.UnknownHostException: org.cat

程序员文章站 2022-04-14 20:42:10
...

这个报错是因为本地未配置cat服务地址,会默认使用org.cat,导致域名无法解析。
在项目启动盘根目录下建文件client.xml,假如在D盘:D:\data\appdatas\cat\client.xml

里面填写以下内容:

<?xml version="1.0" encoding="utf-8"?>
<config>
	<servers>
		<server ip="{cat.host}" port="80" http-port="80" enabled="true"/>
	</servers>
</config>
  • 必须至少有一个enabled=true的server,否则会报除0异常,因为对分布式的支持,会做取整处理。
    参看:com.dianping.cat.configuration.DefaultClientConfigService.getServerConfigUrl()

  • {cat.host}一般使用本地或有效的cat服务地址,也可以使用localhost等无效地址。第一次使用cat时会请求这个地址初始化路由,如果使用无效地址时,会重试3次,每次30秒左右的超时,在这段时间程序无响应。第二次就正常了。
    参看:com.dianping.cat.configuration.DefaultClientConfigService.refreshConfig()

  • http-port是cat服务的端口地址,而不是port

    启动成功后,会生成D:\data\appdatas\cat\client_cache.xml

    <?xml version="1.0" encoding="utf-8"?>
    <config enabled="true" max-message-size="5000">
       <servers>
          <server ip="{route.path}" port="2280" http-port="80" enabled="true"/>
       </servers>
    </config>
    

    这个地址是访问cat服务地址获得的:http://{cat.host}/cat/s/router?domain={project-name}&ip={local.ip}&op=xml&env=unknown&hostname={local.hostname}

    返回:

    <?xml version="1.0" encoding="utf-8"?>
    <property-config>
       <property id="startTransactionTypes" value="Cache.;Squirrel."/>
       <property id="matchTransactionTypes" value="SQL"/>
       <property id="block" value="false"/>
       <property id="routers" value="{route.path:port};"/>
       <property id="sample" value="1.0"/>
    </property-config>
    

    client.xmlclient_cache.xml可以只存在一个,CAT会优先使用client_cache.xml
    参看:com.dianping.cat.configuration.ApplicationEnvironment.loadAppName()

相关标签: CAT org.cat