JAX-WS и spring. Не получается связать вместе.
От: brejnev Россия  
Дата: 05.02.08 10:58
Оценка:
Spring 2.0.6
JAX-WS 2.1

Написал web-сервис

@WebService
public class IncomingCallWS{

    @WebMethod
    public String receiveCall(...) {

    }

    public IncomingCallWS() {
        System.out.println(" ---- IncomingCallWS has created ---- ");
    }

    private HotLine hotLine;

    public HotLine getHotLine() {
        return hotLine;
    }

    public void setHotLine(HotLine hotLine_) {
        this.hotLine = hotLine_;
    }
}


Согласно quick-start https://jax-ws-commons.dev.java.net/nonav/spring/ сделал такое

web.xml
    <servlet>
        <servlet-name>jaxws-servlet</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>jaxws-servlet</servlet-name>
        <url-pattern>/IncomingCallWSService</url-pattern>
    </servlet-mapping>


applicationContext.xml
    <bean id="hotLine" class="ru.izhnet.common.ccenter.HotLine">
<!-- некоторый бин, через который веб-сервис будет таскать данные. -->
...
    </bean>
    
    <bean id="IncomingCallWSService" scope="prototype" class="ru.izhnet.common.ccenter.ws.IncomingCallWS">
        <property name="hotLine" ref="hotLine"/>
    </bean>
    
    <wss:binding id="jax-ws.http" url="/IncomingCallWSService">
        <wss:service>
            <ws:service bean="#IncomingCallWSService" impl="ru.izhnet.common.ccenter.ws.IncomingCallWS"/>
        </wss:service>
    </wss:binding>


Деплою это в сервер приложений, запускаю веб сервис http://localhost:8081/Owl/IncomingCallWSService?WSDL. Работает, посылает строки или pojo.
Теперь мне нужно получить данные, которые предоставляет бин hotLine( описан в applicationContext). Так вот, он — null. По идее, spring создает бин веб-сервиса и передает ему указанный бин( в методах разместил log.warn, которые мне сообщают о том что творится). Получается так: при старте web-приложения все бины создаются, все нормально, однако, при обращении к веб-сервису бин веб-сервиса создается снова, но hotLine ему не передается( отсюда он null). Такое ощущение, что веб-сервис работает вне контекста spring.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.