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.