Спасибо за быстрый ответ, Паскаль.
Кстати, я настоятельно рекомендую использовать «действительный» сервлет 2.5 или сервлет 3.0 web.xml (используя атрибут version в элементе web-app и объявление xsd).
Я использую версию 2.5, я просто не вставил эту часть в свой пост
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:j2ee="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<description>WebTier for the Login Manager Service</description>
<display-name>LoginManagerWAR</display-name>
<servlet>
<description>Endpoint for Login Manager Web Service</description>
<display-name>LoginManagerControllerService</display-name>
<servlet-name>LoginManagerController</servlet-name>
<servlet-class>loginmanager.controller.LoginManagerController</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LoginManagerController</servlet-name>
<url-pattern>/LoginManagerControllerService</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>54</session-timeout>
</session-config>
PostConstruct работает нормально, спасибо, но загрузка при запуске все же не произошла.
@WebService(
name="LoginManagerController",
serviceName="LoginManagerControllerService"
)
public class LoginManagerController {
private ILoginManager manager;
@Resource
private WebServiceContext wsContext;
@PostConstruct
private void init(){
.....
}
Более того, теперь каждый клиентский запрос выполняет 2 вызова init () веб-службы:
как я могу видеть в цепной пиле, сначала вызывается init () службы, затем вызывается снова, а затем - фактически клиентская функция (я печатаю хэш-код экземпляра класса webservice и тот же экземпляр для обоих вызовов !!!):
> Метод сообщения внутри init () ... controller = 31641446
> Менеджер входа в систему сообщений = 11229828
> ..... инициация элементов .... блаблабла .....
> Метод выхода из сообщения init ()
> Метод сообщения внутри init () ... controller = 31641446
> Менеджер входа в систему сообщений = 32361523
Контроллер - это служба, и менеджер (чей хэш-код был изменен с первого вызова на второй) создан внутри init () контроллера.
Я не понял, что не так ...
UPDATE
Это похоже на проблему, связанную с glassfish v3 (может быть, моя настройка env или конфигурация glassfish). Я попробовал эту войну на Sailfin и Glassfish V2, и она отлично работает ....