很奇怪,程序在各个环境正常运行快一年来,这个月中旬,公司搬迁,机房和网络都换,服务器启动都正常,也就没有关注了。今天开发跟我说,应用起不来,报java.net.UnknownHostException: struts.apache.org错。觉得很奇怪,服务器自从搭建好后,一直就没有改过,怎么忽然出错了。
经过漫长的查找定位,发现了一个问题,就是之前所有环境的服务器都可以连接网络的。现在机房里的机器,都不能连接外网了。在本地验证,断开网络,程序启动报错,联通网络,程序又正常。估计问题就出现网络上了。
查看系统日志,发现解析struts.xml文件报错,而且是联网错误java.net.UnknownHostException: struts.apache.org。通过查看strtus.xml文件,发现只有
http://struts.apache.org/dtds/struts-2.3.dtd需要联网的。估计问题就在这里来。struts加载的时候,可能找不到/默认不从本地查找dtd文件,自动到网络上查找,而服务器没有来内网,导致校验出错。
通过查找项目中的struts-core-2.3.16.jar,发现里面已经包含了2.3.dtd的文件,但是不知道为什么还要联网查找,没有深入追究,先解决开发的问题再说。
解决方法:
将struts.xml文件声明的dtd修改为本地验证,不使用网络上的文件:
即将http://struts.apache.org/dtds/struts-2.3.dtd替换为classpath:struts-2.3.dtd。如下:
<!--DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"classpath:struts-2.3.dtd">
重启服务器,系统正常了。如果不行可能需要将struts-2.3.dtd文件copy到src(classpath)下面(我的没有修改)。
以下是系统启动的错误信息:
2016-01-27 10:16:32,561 INFO org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh:510 - Refreshing Root WebApplicationContext: startup date [Wed Jan 27 10:16:32 CST 2016]; root of context hierarchy
2016-01-27 10:16:32,650 INFO [b]org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:316 - Loading XML bean definitions from URL [file:/usr/local/apache-tomcat-8.0.20/webapps/cms/WEB-INF/classes/applicationContext-profiles.xml][/b]
2016-01-27 10:16:32,896 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:316 - Loading XML bean definitions from class path resource [applicationContext.xml]
2016-01-27 10:16:35,139 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:316 - Loading XML bean definitions from class path resource [struts.xml]
2016-01-27 10:16:40,208 ERROR org.springframework.web.context.ContextLoader.initWebApplicationContext:220 - Context initialization failed
[b]org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [struts.xml]; nested exception is java.net.UnknownHostException: struts.apache.org[/b]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:409)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)
..............
Caused by: java.net.UnknownHostException: struts.apache.org
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
..............
27-Jan-2016 10:16:40.240 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Error listener Start
27-Jan-2016 10:16:40.268 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/cms] startup failed due to previous errors
27-Jan-2016 10:16:40.286 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThre ads The web application [cms] appears to have started a thread named [FileWatchdog] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Thread.sleep(Native Method)
- 大小: 124.4 KB
- 大小: 89.7 KB
分享到:
相关推荐
Caused by: java.net.UnknownHostException: openapi.alipay.com
linux系统下部署TOMCAT异常错误java.net.UnknownHostException :bogon: bogon 主要原因是主机映射原因 修改hosts文件即可
例如,在Java应用中,可以使用官方提供的`consul-client`库,通过`Registration`对象设置服务信息并调用`AgentService.register()`方法。对于其他语言,也有相应的SDK或HTTP请求实现。 5. **健康检查** Consul支持...
项目中碰到的,记录一下解决方案
Java 和 .NET 是两个主要的软件开发平台,它们各自提供了丰富的工具和技术来构建各种类型的应用程序。这两个平台在很多方面都有交集,但也各有特点。 Java 是一种面向对象的编程语言,由Sun Microsystems(现在是...
java HashMapDemo.java
【项目源码】-java网络...import java.net.UnknownHostException; import java.sql.Time; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; /** * 登录面板 *
Apache JMeter 是一款广泛应用的开源性能测试工具,用于测试Web应用的负载和性能。在JMeter的生态系统中,插件扮演着重要的角色,能够扩展其功能,提高测试效率。其中,`jmeter-plugins-manager-1.4.jar`是JMeter的...
首先,你需要启动 DBeaver 应用程序。一旦应用程序打开,你会看到一个主界面,通常包含多个工作区和选项卡。为了建立一个新的数据库连接,按照以下步骤进行: 1. **创建数据库连接** 在主界面的左侧,你会看到一个...
参考百度Java文档Android Studio模拟定位服务 (安装插件)无法从百度获取地图数据错误显示如下: java.net.UnknownHostException: Unable to resolve host "loc.map.baidu.com": No address associated with ...
import java.net.UnknownHostException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java...
import java.net.UnknownHostException; public class TCPClient { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1",4444); OutputStream oStream = socket....
《Spring Cloud Alibaba Nacos与Feign的整合应用详解》 在微服务架构中,服务间的通信是关键一环。Spring Cloud Alibaba提供了丰富的组件,其中包括Nacos作为服务注册与配置中心,以及Feign作为声明式服务调用工具...
标题中的"ip6-java.zip"表明这是一个与IPv6(Internet Protocol version 6)相关的Java项目。IPv6是互联网协议的最新版本,它扩展了IPv4的地址空间,提供了更大的网络地址容量,以应对互联网设备数量的快速增长。在...
import java.net.UnknownHostException; public class FileClient { /** * @param args */ public static void main(String[] args) { // 文件的输出流 try { java.io.FileOutputStream fos = new ...
import java.net.UnknownHostException; public class NsLookup { public static void main(String[] args) { try { InetAddress address = InetAddress.getByName(args[0]); // 获取指定域名的InetAddress对象 ...
import java.net.UnknownHostException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import net.sf.json.JSONArray; import org.apache.commons.codec.binary....
import java.net.UnknownHostException; public class ClientDemo { public static void main(String[] args) { try { InputStream in = new FileInputStream("D:\\Client"); byte[] buf = new byte[1024*1024...