ClassPathXmlApplicationContext 手动加载spring时遇到的问题

通过ClassPathXmlApplicationContext 加载spring时 在加载到hibernate配置文件的时候就报错了 ,而且有时不报错有时就报错

错误:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [hibernate.cfg.xml]; nested exception is java.net.ConnectException: Connection timed out: connect
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:416)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93)
at com.nodeproxy.database.base.ApplicationContextSingleton.getInstance(ApplicationContextSingleton.java:21)
at com.nodeproxy.thread.service.ServiceDownloadThread.run(ServiceDownloadThread.java:23)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:790)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:731)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:656)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:979)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1192)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1089)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1002)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
... 18 more

看异常我感觉是hibernate dtd的问题,但是dtd是先从本地找的,我直接用tomcat起项目的话就没有问题,求解

2个回答

nested exception is java.net.ConnectException: Connection timed out: connect
at

hibernate.cfg.xml的问题

你的cfg头是什么?

换成如下试试:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

yh502564622
yh502564622 所以我也很纠结啊 不过好在没有在出现过这个问题了
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 如果手动加载hibernate配置的话可能要联网去加载dtd文件 ,而网速慢就导致了 连接延迟,没有dtd就不能解析配置 不过hibernate jar包中都有dtd的啊 这个肯定是不需要的 之前使用从没有遇到这种情况
7 年多之前 回复
yh502564622
yh502564622 我用ClassPathXmlApplicationContext 加载的时候把hibernate的配置文件也加载了 ,但是在spring的配置文件中又引用了hibernate的配置, 不知道是不是重复了的问题, 我刚让ClassPathXmlApplicationContext 只加载spring的配置就可以了。 如果手动加载hibernate配置的话可能要联网去加载dtd文件 ,而网速慢就导致了 连接延迟,没有dtd就不能解析配置了
7 年多之前 回复
yh502564622
yh502564622 谢谢 你提醒了我 我搞定了
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 对, 不是我说的问题, 你在eclipse中运行造成的? 很奇怪 。 既然你和spring集成了,就不需要hibernate.cfg.xml了 你可以把该配置文件卡掉
7 年多之前 回复
yh502564622
yh502564622 如果配置错误啊之类的话 那我用tomcat启动也一定会报错的 但是现在tomcat启的话完全正常 而手动加载的话就会包上边那种 连接超时的错误
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 这个之前遇到过 doctype造成 hibernate不能运行
7 年多之前 回复
yh502564622
yh502564622 头就是这个 配置肯定没有问题的 因为有时候就能运行哦
7 年多之前 回复

打出的异常是IO异常,确定路径是否正确吧

yh502564622
yh502564622 其实我一直认为是网络问题的 但是tomcat起的话又正常 纠结啊
7 年多之前 回复
chawei784533
chawei784533 能否确定不是网络问题
7 年多之前 回复
yh502564622
yh502564622 对啊 昨天下午一直都是时好时坏的 这个错误让我郁闷的啊
7 年多之前 回复
chawei784533
chawei784533 那有时报错有时不报错都是手动启动吗?
7 年多之前 回复
yh502564622
yh502564622 我用tomcat起就完全没有问题啊 所以能确定配置没有问题啊
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐