当前位置: 首页 > 工具软件 > CAT.NET > 使用案例 >

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

花阳秋
2023-12-01

这个报错是因为本地未配置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()

 类似资料: