访问布署在resin中的项目出现 java.net.UnknownHostException: .: .异常

文章详细记录了解决resin4部署项目访问异常的过程,包括检查resin日志、误以为是类文件损坏的误解,最终发现是resin配置错误导致的问题。通过将host配置中的服务器IP地址明确指定,成功解决了访问问题。

最近公司布署在resin4中的项目突然访问不了,查看resin日志发现报以下异常,并且是只有进行项目访问时才报错:

 com.caucho.config.ConfigRuntimeException: java.net.UnknownHostException: .: .
at com.caucho.config.ConfigException.create(ConfigException.java:168)
at com.caucho.server.host.Host.initBam(Host.java:698)
at com.caucho.server.host.Host.start(Host.java:669)
at com.caucho.env.deploy.DeployController.startImpl(DeployController.java:630)
at com.caucho.env.deploy.DeployController.restartImpl(DeployController.java:582)
at com.caucho.env.deploy.StartAutoRedeployAutoStrategy.
request(StartAutoRedeployAutoStrategy.java:138)
at com.caucho.env.deploy.DeployController.request(DeployController.java:545)
at com.caucho.server.host.HostContainer.getHost(HostContainer.java:382)
at com.caucho.server.host.HostContainer.buildInvocation(HostContainer.java:316)
at com.caucho.server.cluster.Server.buildInvocation(Server.java:911)
at com.caucho.server.dispatch.InvocationServer.
buildInvocation(InvocationServer.java:247)
at com.caucho.server.dispatch.InvocationServer.
buildInvocation(InvocationServer.java:220)
at com.caucho.server.http.AbstractHttpRequest.
buildInvocation(AbstractHttpRequest.java:1472)
at com.caucho.server.http.AbstractHttpRequest.
getInvocation(AbstractHttpRequest.java:1445)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:779)
at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730)
at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689)
at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)
at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617)
at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104)
at com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98)
at com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81)
at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67)
at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
Caused by: java.net.UnknownHostException: .: .
at java.net.InetAddress.getLocalHost(InetAddress.java:1354)
at com.caucho.server.host.Host.initBam(Host.java:696)
... 23 more


一开始以为是项目的class文件损坏了,把项目重新编译重新布署后当时没问题了,但过了一段时间后又出现这个异常了。

之前用得好好的,突然就变成这样了,整了好久,发现是resin配置造成的:

最初resin.xml中关于host的配置为:

 <host id="" root-directory=".">
 ...
 </host>

修改成

	<host id="服务器的IP地址" root-directory=".">
 ...
 </host>
这样就OK了。

很诡异的问题........




`java.net.UnknownHostException` 通常表明在尝试解析主机名时出现了问题,可能是主机名不存在、DNS 服务器无法解析主机名,或者主机名在 DNS 记录中不存在等原因导致的 [^1]。解决 `java.net.UnknownHostException: msedgedriver.azureedge.net` 错误的方法如下: ### DNS 相关检查与修复 - **检查 DNS 配置**:确保系统的 DNS 配置正确。可以尝试将 DNS 服务器更改为公共 DNS 服务器,如 Google 的 `8.8.8.8` 和 `8.8.4.4`,或者阿里云的 `223.5.5.5` 和 `223.6.6.6`。 - **Windows 系统**:打开“控制面板” -> “网络和 Internet” -> “网络连接”,右键点击当前使用的网络连接,选择“属性”,在“此连接使用下列项目”列表中选中“Internet 协议版本 4 (TCP/IPv4)”,点击“属性”,选择“使用下面的 DNS 服务器地址”,输入公共 DNS 服务器地址。 - **Linux 系统**:编辑 `/etc/resolv.conf` 文件,添加或修改 `nameserver` 行,例如: ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4 ``` - **刷新 DNS 缓存**: - **Windows 系统**:在命令提示符中运行 `ipconfig /flushdns`。 - **Linux 系统**:不同发行版刷新 DNS 缓存的方法不同,如 Ubuntu 可以通过重启 `systemd-resolved` 服务来刷新:`sudo systemctl restart systemd-resolved`。 ### 网络连通性检查 - **检查网络连接**:确保设备已正常连接到网络,可以尝试访问其他网站来验证网络是否正常。 - **检查防火墙和代理设置**:防火墙或代理可能会阻止对 `msedgedriver.azureedge.net` 的访问。暂时关闭防火墙或调整代理设置,看问题是否解决。 ### 主机名解析测试 - **使用 `ping` 和 `nslookup` 命令**:在命令行中使用 `ping msedgedriver.azureedge.net` 检查是否可以ping通该主机,使用 `nslookup msedgedriver.azureedge.net` 检查 DNS 解析是否正常。如果 `nslookup` 无法解析该主机名,可能是 DNS 配置有问题。 ### 代码层面处理 如果是在 Java 代码中出现该异常,可以在代码中捕获并处理该异常,同时添加重试机制: ```java import java.io.IOException; import java.net.InetAddress; public class HostResolutionTest { public static void main(String[] args) { int maxRetries = 3; int retryCount = 0; while (retryCount < maxRetries) { try { InetAddress address = InetAddress.getByName("msedgedriver.azureedge.net"); System.out.println("Resolved address: " + address.getHostAddress()); break; } catch (IOException e) { System.err.println("Failed to resolve host, attempt " + (retryCount + 1) + ": " + e.getMessage()); retryCount++; try { // 等待一段时间后重试 Thread.sleep(2000); } catch (InterruptedException ie) { Thread.currentThread().interrupt(); } } } if (retryCount == maxRetries) { System.err.println("Failed to resolve host after " + maxRetries + " attempts."); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值