1

JAX-WS の Spring 拡張機能を使用していますが、Spring 構成でリストを使用する際に問題があります。

これは作業構成です:

<wss:binding url="/services/demo">
    <wss:service>
        <ws:service bean="#demoEndpoint">
            <ws:handlers>
                <ref bean="handler1"/>
                <ref bean="handler2"/>
            </ws:handlers>
        </ws:service>
    </wss:service>
</wss:binding>

同じハンドラーのセットを使用する必要があるエンドポイントがさらにあるため、単一の構成でハンドラーのリストを定義したいと考えています。

しかし、この構成は機能しません:

<util:list id="myHandlers">
    <ref bean="handler1"/>
    <ref bean="handler2"/>
</util:list>

<wss:binding url="/services/demo">
    <wss:service>
        <ws:service bean="#demoEndpoint">
            <ws:handlers>
                <ref bean="myHandlers"/>
            </ws:handlers>
        </ws:service>
    </wss:service>
</wss:binding>

次の例外が発生します。

Caused by: java.lang.IllegalStateException: Cannot convert value of type [java.util.ArrayList] to required type [javax.xml.ws.handler.Handler] for property 'handlers[0]': no matching editors or conversion strategy found
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:264)
    at org.springframework.beans.TypeConverterDelegate.convertToTypedCollection(TypeConverterDelegate.java:559)
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:199)
    at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:448)
    ... 66 more

これは、org.jvnet.jax_ws_commons.spring.SpringService の対応するセッターです。

public void setHandlers(List<Handler> handlers) {
    this.handlers = handlers;
}
4

0 に答える 0