Инъекция CDI в конечную точку JAX-WS не работает, приводит к NPE - PullRequest
1 голос
/ 15 декабря 2011

Почему следующий CDI не работает в конечных точках JAX-WS в glassfish 3.xx?Я получаю NPE при доступе к сервису из конечной точки.

@WebService
public class JaxWsTestEndpoint {

    @Inject
    private MyService service;

    @WebMethod
        public String sayHello(String name) {
        System.out.println("injected service:" + service);
        service.callService();
        return "Hello, " + name + ".";
    }
}

Где класс "service" определяется следующим образом:

@Named("myService")
public class MyService {
     public MyService() {
        System.out.println("init myService.");
     }

    public void callService() {
            System.out.println("calling Service.");
    }
 }

У меня есть пустой файл beans.xml вWEB-INF.Я попробовал это с полностью пустым содержимым и с пустым тегом

<?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>

.Но каким-то образом поле службы в конечной точке JAX-WS по-прежнему равно NULL после развертывания и во время получения запроса веб-службы, что приводит к NPE при вызове службы.Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 09 мая 2012

Да, я заработал, удалив sun-jaxws.xml и изменив файл web.xml, указав мой веб-сервис напрямую вместо WSServlet.

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <!-- This listener parses a sun specific configuration file (sun-jaxws.xml), which provides the web service
endpoints and connects the WSServlet instance to the services' implementation classes -->
<!--<listener>
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener> -->

<!-- Delegate requests whose URLs end with the path '/StakeholderWebService' to a WSServlet instance provided by container, which in turn is linked to the JWS runtime --> 
<servlet>
    <servlet-name>StakeholderWebService</servlet-name>
<!--     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> -->
    <servlet-class>com.werner.stakeholder.webservices.StakeholderWebServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>StakeholderWebService</servlet-name>
    <url-pattern>/stakeholderWebService</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>120</session-timeout>
</session-config>

1 голос
/ 28 января 2012

Вы можете попробовать удалить sun-jaxws.xml из каталога WEB-INF. Этот способ помог мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...