問題
ここに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>