Java Apache CXF WS中的请求为空

Java Apache CXF WS中的请求为空,java,web-services,jaxb,cxf,java-ee-5,Java,Web Services,Jaxb,Cxf,Java Ee 5,我使用ApacheCXF编写了一个WS,在Implement类中获取请求数据时,它给出了所有空值 <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.sa

我使用ApacheCXF编写了一个WS,在Implement类中获取请求数据时,它给出了所有空值

<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>
并得到空指针异常

这可能是什么原因呢

谢谢, 班纳特

所以用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());

确保您使用的是最新版本的CXF。对于较新版本的CXF,可能会引发异常,并提供有关消息错误的更多详细信息。造成这种情况的正常原因是元素的命名空间错误。例如,如果模式的名称空间不完全正确,JAXB将不知道如何处理它。默认情况下,JAXB只是跳过它,这是CXF过去所做的。最近的版本在JAXB中添加了一个监听器,它将捕获该监听器并由于未知元素引发异常。(它通常会打印出它在那一点上期望的元素名称)

请检查请求,我正在发送标题和消息,即使这样,它也是空的。在这个链接中找到代码
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 
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());