spring整合xfire出現如下錯誤:
資訊: Loading Spring root WebApplicationContext<br />2010-3-12 10:52:44 org.apache.catalina.core.StandardContext listenerStart<br />嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener<br />org.springframework.beans.factory.BeanDefinitionStoreException: Line 5 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".<br />org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".<br />at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)<br />at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)<br />at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)<br />at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)<br />at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)<br />at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)<br />at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)<br />at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)<br />at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:222)<br />at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:173)<br />at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)<br />at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126)<br />at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)<br />at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126)<br />at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)<br />at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)<br />at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:269)<br />at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)<br />at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)<br />at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)<br />at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)<br />at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)<br />at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)<br />at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)<br />at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)<br />at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)<br />at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)<br />at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)<br />at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)<br />at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)<br />at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)<br />at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)<br />at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)<br />at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)<br />at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)<br />at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)<br />at org.apache.catalina.core.StandardService.start(StandardService.java:516)<br />at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)<br />at org.apache.catalina.startup.Catalina.start(Catalina.java:566)<br />at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />at java.lang.reflect.Method.invoke(Unknown Source)<br />at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)<br />at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)<br />2010-3-12 10:52:44 org.apache.catalina.core.StandardContext start<br />嚴重: Error listenerStart<br />2010-3-12 10:52:44 org.apache.catalina.core.StandardContext start<br />嚴重: Context [/XfireSpring] startup failed due to previous errors
問題原因:
Xfire內建的包下有個spring1.2.6的jar包,而工程的jar包是2.0的。
解決方案
將原設定檔的頭schema方式換為DOCTYPE方式,原設定檔如下
<?xml version="1.0" encoding="UTF-8"?><br /><beans<br />xmlns="http://www.springframework.org/schema/beans"<br />xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"></p><p> <bean id="helloWS" class="com.HelloWorld"/><br /> <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/><br /> <bean name="helloService" class="org.codehaus.xfire.spring.ServiceBean"><br /> <property name="serviceBean" ref="helloWS"/><br /> <property name="serviceClass" value="com.IHelloWorld"/><br /> <property name="inHandlers"><list><ref bean="addressingHandler"/></list></property><br /></bean></p><p></beans>
改成:
<?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><br /><beans></p><p> <bean id="helloWS" class="com.HelloWorld"/><br /> <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/></p><p> <bean name="helloService" class="org.codehaus.xfire.spring.ServiceBean"><br /> <property name="serviceBean" ref="helloWS"/><br /> <property name="serviceClass" value="com.IHelloWorld"/><br /> <property name="inHandlers"><list><ref bean="addressingHandler"/></list></property><br /></bean></p><p></beans>