Spring и Jax-WS: где находится схема xsd? - PullRequest
0 голосов
/ 09 ноября 2010

В весеннем файле applicationConfig.xml , для интеграции JAX-WS нужны определенные схемы.Недавно я успешно использовал эти объявления:

    [Я должен удалить все URL (кроме одного), потому что это мой первый вопрос]

    Файлначинается с этих объявлений:
    <beans xmlns="http www.springframework.org/schema/beans" xmlns:xsi="http www.w3.org/2001/XMLSchema-instance" xmlns:aop="http www.springframework.org/schema/aop" xmlns:tx="http www.springframework.org/schema/tx" xmlns:context="http www.springframework.org/schema/context" 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.xsd http www.springframework.org/schema/aop http www.springframework.org/schema/aop/spring-aop.xsd http www.springframework.org/schema/tx http www.springframework.org/schema/tx/spring-tx.xsd http www.springframework.org/schema/context http www.springframework.org/schema/context/spring-context.xsd http jax-ws.dev.java.net/spring/core https jax-ws.dev.java.net/spring/core.xsd http jax-ws.dev.java.net/spring/servlet https jax-ws.dev.java.net/spring/servlet.xsd">
    (...)
    <ws:service id="myService" bean="#myWS" />
    <wss:binding url="/services/myws" service="#myService" />

    Теперь выполняется миграция для веб-сайта jax-ws.dev.java.сеть.Эти файлы не найдены, и у меня есть ошибки в Tomcat и Eclipse:

    org.xml.sax.SAXParseException: schema_reference.4: Не удалось прочитать документ схемы 'https://jax -ws.dev.java.net / spring / core.xsd ', потому что 1) не удалось найти документ;2) документ не может быть прочитан;3) корневого элемента документа нет.

    Есть решение или что-то, чтобы предотвратить эту ошибку?

    Спасибо

    Ответы [ 3 ]

    4 голосов
    / 09 ноября 2010

    Наконец, я извлекаю XSD из jaxws-spring-1.8.jar (lib для jax-ws для работы со Spring). Я поместил эти XSD в каталог WEB-INF, рядом с applicationContext.xml . Я изменяю объявление схемы в этом файле следующим образом:

       http://jax-ws.dev.java.net/spring/core classpath:spring-jax-ws-core.xsd
       http://jax-ws.dev.java.net/spring/servlet classpath:spring-jax-ws-servlet.xsd
    

    Я видел решение здесь: Spring schemaLocation не работает, когда нет подключения к Интернету

    1 голос
    / 01 декабря 2010

    Вам не нужно извлекать XSD из банки jaxws-spring. Вам просто нужно убедиться, что используемый вами URL-адрес соответствует URL-адресу в файле META-INF / spring.schemas в jar

    Они определены следующим образом:

    http\://jax-ws.dev.java.net/spring/core.xsd=spring-jax-ws-core.xsd
    http\://jax-ws.dev.java.net/spring/servlet.xsd=spring-jax-ws-servlet.xsd
    http\://jax-ws.dev.java.net/spring/local-transport.xsd=spring-jax-ws-local-transport.xsd
    

    Думаю, вам просто нужно заменить https на http. Например:

    <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.0.xsd
              http://jax-ws.dev.java.net/spring/core http://jax-ws.dev.java.net/spring/core.xsd
              http://jax-ws.dev.java.net/spring/servlet http://jax-ws.dev.java.net/spring/servlet.xsd>
    

    Для получения дополнительной информации о spring.schemas см. здесь

    1 голос
    / 09 ноября 2010

    Я полагаю, вы используете Maven для строительства?Попробуйте добавить зависимость в pom.xml

    <dependency>
          <groupId>javax.xml.ws</groupId>
          <artifactId>jaxws-api</artifactId>
          <version>2.1-1</version>
    </dependency>
    

    Если вы не используете maven, убедитесь, что у вас есть библиотеки jax-ws на вашем пути к классам.http://java.net/projects/jax-ws

    ...