2014-06-12 42 views
1

当Java EE服务器尝试解析其中一个服务的主机名时,我们发现以下异常。我们可以通过ping/nslookup命令手动解析该主机名。我们还能够使用curl和服务器尝试使用的相同参数来启动该外部服务。所以,只有当我们尝试从Java/Java EE应用程序向外部主机发出请求时,才会出现此问题。来自Java的UnknownHostException,但主机使用Ping解析/ nslookup/curl

要解决此问题,我们在/ etc/hosts文件中手动添加了一个条目,它解决了问题,但我们需要一个永久性解​​决方案,因此我们不必更改IP。它之前一直在工作,但没有添加入口,但突然间它停止工作。

详细我们的环境:

OS:美分OS 6.3

的Java:JDK 1.6.0_24

Java EE服务器:JBoss AS中7.1.1

HTTP客户端库:HttpClient的-4.0.jar

在此先感谢您的帮助!

错误,同时检查销售人员许可证|: 的java.net.UnknownHostException:na15.salesforce.com在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175) [rt.jar中:1.6.0_24 ] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) [rt.jar:1.6.0_24] at java.net.Socket.connect(Socket.java:546) [rt.jar:1.6。 0_24] sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:584) [jsse.jar:1.6.0_24] at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java: 333)org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123) [httpclient-4.0.jar:4.0] org.apache.http中的[httpclient-4.0.jar:4.0]。 impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147) [httpclient-4.0.jar:4.0] at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:101) [httpclient- org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:381) [httpclient-4.0.jar:4.0] org.apache.http.impl.client。 AbstractHttpClient.execute(AbstractHttpClient.java:641) [httpclient-4.0.jar:4.0] at org.ap ache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) [HttpClient的-4.0.jar:4.0]

回答

2

这很可能是一个网络管理,变更/配置管理或一般的系统管理问题而不是编程问题。

这是工作之前,没有添加该条目,但突然间它停止工作。

一种方法是试图找出导致它停止工作的变化。这不是那种会自发发生的事情。有人或某事已经改变了一些软件或配置来实现这一点。从停止的时候开始(或者当你注意到的时候),并回顾你的更改日志。

听起来像这是Java DNS解析过程的问题。看起来,解析器要么不试图与正常的DNS服务器通话,要么尝试失败。

我们无法为您进行调试,但是我发现这些资源有助于解释在Java中进行名称查找时应该发生的情况,并提供一些关于故障排除的建议。

资源:

+0

谢谢您的回答!我们认为它应该是一个问题,Java如何尝试解析DNS名称与操作系统是如何实现的。你的指针肯定会有帮助。 –

+0

我们发现了这个问题。问题在于DNS服务器配置的更改。谢谢你的帮助!! –