2013-12-12 88 views
0

我applicationContext.xml文件是JAX-WS 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:ws="http://jax-ws.dev.java.net/spring/core" 
    xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.0.xsd 
     http://jax-ws.dev.java.net/spring/core 
     http://jax-ws.java.net/spring/core.xsd 
     http://jax-ws.dev.java.net/spring/servlet 
     https://jax-ws.dev.java.net/spring/servlet.xsd"> 
    <wss:binding url="/details"> 
     <wss:service> 
      <ws:service bean="#Accountimpl" /> 
     </wss:service> 
    </wss:binding> 

    <!-- Web service methods --> 
    <bean id="accountimpl" class="com.webservice.spring.Accountimpl" /> 
</beans> 

罐子我用

  • 春天上下文3.2.5.RELEASE
  • 弹簧核心3.2.5.RELEASE
  • spring-beans 3.2.5.RELEASE
  • spring-context-support 3.2.5.RELEASE
  • JAXWS-RT 2.2.3
  • JAXWS弹簧1.8

我的web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 
<web-app> 
    <display-name>Spring-Webservice</display-name> 
    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>Details</servlet-name> 
     <servlet-class> 
      com.sun.xml.ws.transport.http.servlet.WSSpringServlet 
     </servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Details</servlet-name> 
     <url-pattern>/details</url-pattern> 
    </servlet-mapping> 
</web-app> 

在我的web.xml文件显示警告作为监听级引用不存在的类组织.springframework.web.context.ContextLoaderListener 当JBoss服务器部署IAM我得到异常下面的servlet类引用不存在的类“com.sun.xml.ws.transport.http.servlet.WSSpringServlet”

17:13:09,569 WARN [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] (MSC service thread 1-8) Ignored XML validation warning: org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans-3.2.0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>. 
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196) 
    at org.apache.xerces.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.java:97) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:322) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:281) 
    at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaWarning(XSDHandler.java:2529) 
17:13:09,624 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-3) Context initialization failed: org.springframework.beans.factory.BeanDefinitionStoreException: Line -1 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Premature end of file. 
Caused by: org.xml.sax.SAXParseException: Premature end of file. 
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:283) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1653) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324) 
    at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845) 
    at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768) 
17:13:09,631 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-8) Context initialization failed: org.springframework.beans.factory.BeanDefinitionStoreException: Line 11 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'. 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:417) [spring-2.0.jar:2.0] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:357) [spring-2.0.jar:2.0] 
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'. 
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196) 
    at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:132) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:390) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:322) 


17:13:09,667 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/Spring-Webservice]] (MSC service thread 1-3) Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanDefinitionStoreException: Line -1 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Premature end of file. 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:417) [spring-2.0.jar:2.0] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:357) [spring-2.0.jar:2.0] 

Caused by: org.xml.sax.SAXParseException: Premature end of file. 
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196) 
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:175) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:394) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:322) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError 

17:13:09,695 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/SpringWebService]] (MSC service thread 1-8) Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanDefinitionStoreException: Line 11 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'. 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:417) [spring-2.0.jar:2.0] 

当改变了我的applicationContex.xml文件

<?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:ws="http://jax-ws.dev.java.net/spring/core" 
    xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://jax-ws.dev.java.net/spring/core 
     http://jax-ws.java.net/spring/core.xsd 
     http://jax-ws.dev.java.net/spring/servlet 
     https://jax-ws.dev.java.net/spring/servlet.xsd"> 
    <wss:binding url="/details"> 
     <wss:service> 
      <ws:service bean="#Accountimpl" /> 
     </wss:service> 
    </wss:binding> 

    <!-- Web service methods --> 
    <bean id="accountimpl" class="com.webservice.spring.Accountimpl" /> 

</beans> 

荫得到错误的XMLFILE如下 CVC-复杂type.2.4.c:匹配通配符是严格的,但没有声明可以找到元素'wss:binding'。 - schema_reference.4:无法读取模式文档'https://jax-ws.dev.java.net/spring/servlet.xsd',因为1)找不到文档; 2)文件无法阅读; 3)文档的根元素不是。

Iam无法解决此问题,任何人都可以帮助我解决此问题。

感谢

回答

1

有几件事情错

  1. 缺少罐子(你至少需要弹簧web.jar大概也弹簧webmvc.jar)在
  2. 错误的XSD组态。

添加缺少的罐子,而不是你自己搜索互联网,我强烈建议你使用类似行家或gradle这个来管理你的依赖,这将节省你很多麻烦和google搜索正确的jar文件的组合。

关于XSD有人建议使用XSD文件没有的一个版本,spring会自动使用最新版本。因此在您的配置标题中使用spring-beans.xsd而不是spring-beans-3.2.0.xsd

因为你使用的是Spring 3.2(从jar文件的清单中判断),所以我建议你使用jaxws-spring集成jar的版本1.9,它为3.2构建,1.8依赖于Spring 2.0。

最后,根据the documentation,你的xsd for jax-ws被声明为错误的。你应该使用http://jax-ws.java.net/spring/servlet.xsdhttp://jax-ws.java.net/spring/core.xsd而不是你现在拥有的(https和dev命名空间的组合)。

所以基本上你的头应该是这个样子

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:ws="http://jax-ws.java.net/spring/core" 
xmlns:wss="http://jax-ws.java.net/spring/servlet" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://jax-ws.java.net/spring/core http://jax-ws.java.net/spring/core.xsd 
    http://jax-ws.java.net/spring/servlet http://jax-ws.java.net/spring/servlet.xsd"> 

注意,引用文档是错了,它结合http://jax-ws.java.net/spring/core,然后突然尝试使用http://jax-ws.dev.java.net/spring/core是行不通的。

+0

我正在使用maven仍然面临着isuue – Pawan

+0

你没有使用正确的瓶子,所以你至少错过了它们(或者你的列表不完整)。 –

+0

我使用spring-beans.xsd而不是spring-beans-3.2.0.xsd和jaxws-spring 1.9 jar进行了部署,但仍然得到相同的异常 – Pawan