Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / CDI injection in JAX-WS / 8 сообщений из 8, страница 1 из 1
27.01.2012, 16:48:59
    #37635403
java_developer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
Здравствуйте!
Столкнулся со следующей проблемой - не работает инжекция в jax-ws.

Вот серис, который хочу заинжектить
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Named(value = "menuService")
public class MenuServiceImpl extends ServiceBase implements MenuService {

    @Inject
    private MenuProvider menuProvider;

    public List<MenuEntity> getAllMenuEntity() {
        return menuProvider.getAllMenuEntity();
    }
}



Вот сам вэб сервис

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@WebService(serviceName = "menuWebService")
public class MenuWebService {
    @Resource
    private WebServiceContext wsContext;

    @Inject
    private MenuService menuService;

    @WebMethod
    public List<MenuEntity> getAllMenuEntity() {
        return menuService.getAllMenuEntity();
    }
}



sun-jaxws.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
    <endpoint
            name="MenuWebService"
            implementation="com.iw2it.ws.MenuWebService"
            url-pattern="/services/menuWebService"/>
</endpoints>



Кусочек из web.xml (на Glassfish 3.1.1 работает и без него)

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
        <description>JAX-WS endpoint</description>
        <display-name>WSServlet</display-name>
        <servlet-name>WSServlet</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>WSServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>



Деплою war файл на Glassfish 3.1.1, Glassfish 3.0.1, Tomcat 7.0.23 - все одно и тоже
WSDL вываливается!
Когда тестирую вэб сервис через SoapUI в дебаге - в метод заходит, но menuService is NULL.
Т.е. бин не заинжектился в вэб сервис.

Пробовал играться со скопами - не помогло. В другие бины инжектится без проблем!

Находил схожие темы - говорят, что все мол должно работать, возможно проблемы с самим Glassfish..
Подскажите, если кто-то сталкивался с подобной проблемой..
Спасибо!
...
Рейтинг: 0 / 0
27.01.2012, 18:02:39
    #37635624
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
java_developer,

Про файлик beans.xml не забыли?
Должен лежать в папочке WEB-INF того модуля, в котором хотите чтобы CDI работал. Вот такая xml-ка:

Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
...
Рейтинг: 0 / 0
27.01.2012, 18:18:38
    #37635667
java_developer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
файлик лежит! не забыл! ))
...
Рейтинг: 0 / 0
27.01.2012, 18:25:03
    #37635680
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
java_developer,

Ну тогда я приаттачиваю архив с проектом на NetBeans. Попробовал - все работает.
Далее нужно действовать по принципу "найди три отличия" ;-)
...
Рейтинг: 0 / 0
27.01.2012, 18:40:59
    #37635713
java_developer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
Нашел одно отличие:-сласс NewClass не помечен аннотацией @Named
Вечером попробую обязательно. В любом случае спасибо!
А на какой сервер деплоете?
...
Рейтинг: 0 / 0
27.01.2012, 18:42:52
    #37635715
java_developer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
Насколько я понял - вы деплоете ear архив?!?
...
Рейтинг: 0 / 0
27.01.2012, 18:51:09
    #37635732
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
java_developer,

Деплоил на GF (3.0.1, 3.1 - без разницы)
Деплоил ear, но в принципе если один варник, то тоже будет работать - не суть важно.
По поводу @Named - это так называемый String-based Qualifier (еще есть Annotation-based Qualifiers). Может пригодиться только в случае если вы захотите сослаться на бин через EL (например из фейслета). Вряд ли в нем дело.
...
Рейтинг: 0 / 0
28.01.2012, 13:19:46
    #37636439
java_developer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDI injection in JAX-WS
Проблема оказалась в sun-jaxws.xml
Все заработало как только я его удалил из WEB-INF
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / CDI injection in JAX-WS / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]