dubbo服务提供者在tomcat启动失败的问题
2017-05-15 17:53
330 查看
dubbo的服务提供者是个web服务,打成war包后在tomcat启动失败,查看tomcat的logs目录下的localhost.2017-05-15.log文件,错误信息如下:
看起来应该是xml文件中的dubbo:application没有通过dtd检查,去网上搜了一下这个错误,都是说在eclipse中开发dubbo服务的时候可能会遇到这个错误,但我这是在tomcat运行中报错的,并非开发工具eclipse报错,而且正常情况下这个dtd文件已经打包进了dubbo.jar文件中,spring应该能找到并且使用。
再仔细看一下spring的配置文件,如下:
果然有问题,xsi:schemaLocation属性漏掉了dubbo的xsd地址信息,赶紧加上去,如下图红框位置:
![](https://img-blog.csdn.net/20170515194541166?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYm9saW5nX2NhdmFscnk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
再打war包,部署,启动webapp,终于成功启动,一切正常了,还是有点马虎啊,以后做这种复制粘贴的事情的时候,需要更细心一些才行。
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 67 in XML document from class path resource [spring-mvc.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 67; columnNumber: 53; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:530) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:444) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) at javax.servlet.GenericServlet.init(GenericServlet.java:158) ... ... ...
看起来应该是xml文件中的dubbo:application没有通过dtd检查,去网上搜了一下这个错误,都是说在eclipse中开发dubbo服务的时候可能会遇到这个错误,但我这是在tomcat运行中报错的,并非开发工具eclipse报错,而且正常情况下这个dtd文件已经打包进了dubbo.jar文件中,spring应该能找到并且使用。
再仔细看一下spring的配置文件,如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.bolingcavalry" /> <dubbo:application name="dubbo_service_provider" /> <dubbo:registry address="zookeeper://zkhost:2181" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:service interface="com.bolingcavalry.service.CalculateService" ref="calculateService" /> <!-- 和本地bean一样实现服务 --> <bean id="calculateService" class="com.bolingcavalry.service.impl.CalculateServiceImpl" /> </beans>
果然有问题,xsi:schemaLocation属性漏掉了dubbo的xsd地址信息,赶紧加上去,如下图红框位置:
再打war包,部署,启动webapp,终于成功启动,一切正常了,还是有点马虎啊,以后做这种复制粘贴的事情的时候,需要更细心一些才行。
相关文章推荐
- tomcat 启动失败 严重: Socket accept failed 问题解决
- netsat -ano 查看已占用的端口以及tomcat出现端口被占或者启动失败问题
- 一个tomcat启动失败问题
- tomcat启动失败问题
- SpringBoot问题(Tomcat启动失败)
- Tomcat 启动失败原因分析--端口问题
- Tomcat启动失败的问题排查与解决
- Tomcat 启动始终为preparing launch delegate状态问题解决(Dubbo相关)
- tomcat启动失败常见问题
- Tomcat 启动失败问题 (作者proglife)
- Tomcat 启动失败的问题的解决
- 关于从外部程序启动tomcat失败问题
- 关于eclipse进行web开发tomcat启动失败的一个问题
- Tomcat启动失败:Could not load java.net.URLEncoder 问题解决
- windows 2003 下tomcat启动失败的问题
- Tomcat启动绑定IP失败问题
- Dubbo 服务提供者启动成功后,消费者调用服务失败
- mac系统启动startup.sh tomcat启动失败问题!
- 关于tomcat启动失败问题
- 解决Tomcat因Redis加载慢而启动失败的问题