JAX-WS SPRING INTEGRATION问题

时间:2013-12-12 12:48:50

标签: java spring web-services

我的applicationcontext.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-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>

我用的罐子

  • spring-context 3.2.5.RELEASE
  • spring-core 3.2.5.RELEASE
  • spring-beans 3.2.5.RELEASE
  • spring-context-support 3.2.5.RELEASE
  • jaxws-rt 2.2.3
  • jaxws-spring 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文件中显示警告,作为对不存在的类org.springframework.web.context.ContextLoaderListener的侦听器类引用 对不存在的类“com.sun.xml.ws.transport.http.servlet.WSSpringServlet”的servlet类引用

当iam在jboss服务器中部署时,我遇到异常

    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-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素'wss:binding'的声明。          - schema_reference.4:无法读取模式文档“https://jax-ws.dev.java.net/spring/servlet.xsd”,因为1)找不到文档; 2)文件无法阅读; 3)文档的根元素不是。

我无法解决这个问题,任何人都可以帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

有一些问题

  1. 缺少罐子(你至少需要spring-web.jar,可能还有spring-webmvc.jar)
  2. 配置中的xsd错误。
  3. 添加丢失的罐子,而不是自己搜索互联网我强烈建议你使用像maven或gradle这样的东西来管理你的依赖关系,这将为你节省很多麻烦和google搜索正确的jar文件组合。

    关于XSD,我们建议使用XSD文件 WITHOUT 一个版本,spring会自动使用最新版本。因此,请在配置标头中使用spring-beans.xsd代替spring-beans-3.2.0.xsd

    当你使用Spring 3.2时(根据jaror jars文件列表判断)我建议你使用版本1.9的jaxws-spring集成jar,它是为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