Spring + jax-ws: '#xxx’は 'NCName’の有効な値ではありません

問題

ここにSpring + JAX-WS設定ファイルがあります…​

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

>

    <wss:binding url="/ws/OrderWs">
        <wss:service>
            <ws:service bean="#orderWs"/>
        </wss:service>
    </wss:binding>

    <!-- this bean implements web service methods -->
    <bean id="#orderWs" class="com.mkyong.order.ws.OrderWS">
        <property name="orderBo" ref="OrderBo"/>
    </bean>

</beans>

サーバーの起動時に、次のエラーメッセージが表示されます。

Caused by: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1:
    '#orderWs' is not a valid value for 'NCName'.

解決策

SAXパーサーのエラーメッセージは誤解を招きます。 ' orderWs’は存在しません '!非常に一般的なタイプミス。春のBean設定で追加の「#」。正しい構成は次のようになります。

    <wss:binding url="/ws/OrderWs">
        <wss:service>
            <ws:service bean="#orderWs"/>
        </wss:service>
    </wss:binding>

    <!-- orderWs, not #orderWs -->
    <bean id="orderWs" class="com.mkyong.order.ws.OrderWS">
        <property name="orderBo" ref="OrderBo"/>
    </bean>