java - Apache CXF WS 中的请求为空

标签 java web-services jaxb cxf java-ee-5

我使用 Apache CXF 编写了一个 WS,在实现类中获取请求数据时,它给出了所有空值。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.sample.project.com.au/registration/services/GetCountry/GetCountryRequest/v1" xmlns:v11="http://www.sample.project.com.au/common/message/Request/v1">
       <soapenv:Header/>
       <soapenv:Body>
          <v1:getCountryRequest>
             <v11:header>
                <from>?</from>
                <to>?</to>
                <eventTime>?</eventTime>
                <requestId>?</requestId>
                <channelCode>?</channelCode>
                <enduserCode>?</enduserCode>
                <usecaseName>?</usecaseName>
             </v11:header>
             <v1:message>
                <v1:id>123</v1:id>
                <v1:name>123</v1:name>
                <v1:code>213</v1:code>
             </v1:message>
             <v1:id>213</v1:id>
          </v1:getCountryRequest>
       </soapenv:Body>
    </soapenv:Envelope>

au.com.project.sample.registration.services.getcountry.GetCountryRequest@219baf0b 无效的 无效的 java.lang.NullPointerException

我尝试打印

的值
System.out.println(request);
System.out.println(request.getHeader());
System.out.println(request.getHeader().getFrom());
System.out.println(request.getMessage());
System.out.println(request.getMessage().getId());
System.out.println(request.getMessage().getName());
System.out.println(request.getMessage().getCode());

并得到空指针异常。

这可能是什么原因。

谢谢, 类纳特。

最佳答案

System.out.println(request);  // print GetCountryRequest@219baf0b, so it's bot null
System.out.println(request.getHeader()); // is null
System.out.println(request.getHeader().getFrom()); // NPE becouse header is null 

所以跳过NPE行,或者添加if语句

System.out.println(request);
System.out.println(request.getHeader());
if (request.getHeader() != null)
{
   System.out.println(request.getHeader().getFrom());
}
System.out.println(request.getMessage());
System.out.println(request.getMessage().getId());
System.out.println(request.getMessage().getName());
System.out.println(request.getMessage().getCode());

关于java - Apache CXF WS 中的请求为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372600/

相关文章:

java - Java 方法注释如何与方法覆盖结合使用?

java - 安卓:ActivityNotFoundException

java - 在 Rest Web 方法中传递 JSON 对象

java - 基于 Spring-ws @Endpoint/@PayloadRoot 的配置给出 404

java - 通过 org.w3c.dom API 公开 JAXB 注解的对象

java - MongoDB 和 ElasticSearch Spring 启动

java - 将类(class)转换到自制类(class)

c# - WCF 教程出现错误 400(错误请求)?

java - JAXB 与 JDOM : is it possible to update xml file using JAXB

java - JAXB 和 Jersey - 返回扩展抽象类的对象列表