java - JAX-WS 端点中的 CDI 注入(inject)不起作用,导致 NPE

标签 java jax-ws cdi

为什么以下 CDI 在 glassfish 3.x.x 的 JAX-WS 端点中不起作用?从端点访问服务时,我收到 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 + ".";
    }
}

其中“服务”类定义如下:

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

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

我在 WEB-INF 中有一个空的 beans.xml 文件。我用完整的空内容和空的

尝试了它
<?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端点中的服务字段在部署后和接收Web服务请求期间仍然为NULL,导致调用服务时出现NPE。我在这里缺少什么?

最佳答案

您可以尝试从 WEB-INF 目录中删除 sun-jaxws.xml。这个方法对我很有帮助!

关于java - JAX-WS 端点中的 CDI 注入(inject)不起作用,导致 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8522999/

相关文章:

web-services - JAX-WS 禁用 WSDL 发布

java - 为什么在 Arquillian 测试中没有调用 @PostConstruct

java - 使用 JXL-Selenium(Java) 将数据写入 Excel

java - Android - 在notifyDataSetChanged之后ListView保持空白

java - 带有自定义 JAX-B 绑定(bind)的 JAX-WS MarshalException : Unable to marshal type "java.lang.String" as an element

glassfish - 如何将 session Bean 注入(inject)消息驱动 Bean?

java - Wildfly 8 和焊接 CDI 通过提供程序方法注入(inject)不注入(inject)依赖项

java - Symfony 执行访问数据库的 java 程序

java - 如何读取第一行列中的第二行列值

java - 将 C++ 程序公开为 Web 服务