Web 服务:BeanSerializer

发布于 2024-08-19 02:49:19 字数 2843 浏览 3 评论 0原文

什么时候会出现这样的错误呢?

 <ERROR> <BeanSerializer> <serialize>  <Exception:>
java.io.IOException: Non nillable element 'standardHeader' is null.
        at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:215)
        at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1426)
        at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
        at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200)
        at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
        at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
        at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
        at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
        at org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
        at org.apache.axis.Message.getContentType(Message.java:475)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3231)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)
        at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)

When an error like this will occur?

 <ERROR> <BeanSerializer> <serialize>  <Exception:>
java.io.IOException: Non nillable element 'standardHeader' is null.
        at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:215)
        at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1426)
        at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
        at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200)
        at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
        at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
        at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
        at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
        at org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
        at org.apache.axis.Message.getContentType(Message.java:475)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3231)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)
        at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜味超标? 2024-08-26 02:49:19

每当元素 standardHeader 设置为 null,但它在 XSD 中标记为 nillable="false" 时。

Whenever the element standardHeader is set to null, but it is marked as nillable="false" in the XSD.

久而酒知 2024-08-26 02:49:19

创建 JAXWS 客户端时出现相同的错误:

2016-03-16 10:42:02 ERROR BeanSerializer:274 - Exception:
java.io.IOException: Non nillable element 'createDate' is null.
        at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:215)

因此我调查了生成的 JAXWS 类的内容并发现:

elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("createDate");
        elemField.setXmlName(new javax.xml.namespace.QName("", "createDate"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);

代码的原因。

elemField.setNillable(false);

从 WSDL 创建 JAXWS 客户端时提供了 XSD

<xs:complexType name="AddEventRequestType">
    <xs:sequence>
      <xs:element name="id" type="xs:int"/>
      <xs:element name="createDate" type="xs:string"/>

Get the same error while creating JAXWS Client:

2016-03-16 10:42:02 ERROR BeanSerializer:274 - Exception:
java.io.IOException: Non nillable element 'createDate' is null.
        at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:215)

So I investigated the content of the generated JAXWS classes and found:

elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("createDate");
        elemField.setXmlName(new javax.xml.namespace.QName("", "createDate"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);

The reason of code

elemField.setNillable(false);

is provided XSD while creating JAXWS client from WSDL.

<xs:complexType name="AddEventRequestType">
    <xs:sequence>
      <xs:element name="id" type="xs:int"/>
      <xs:element name="createDate" type="xs:string"/>
朦胧时间 2024-08-26 02:49:19

在 XSD 中设置 minOccurs=0 元素字段,

    elemField = new org.apache.axis.description.ElementDesc();
    elemField.setFieldName("createDate");
    elemField.setXmlName(new javax.xml.namespace.QName("", "createDate"));
    elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));   
    elemField.setMinOccurs(0); //it's treated as null value 
    elemField.setNillable(false);
    typeDesc.addFieldDesc(elemField);

set the minOccurs=0 element field in XSD ,

    elemField = new org.apache.axis.description.ElementDesc();
    elemField.setFieldName("createDate");
    elemField.setXmlName(new javax.xml.namespace.QName("", "createDate"));
    elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));   
    elemField.setMinOccurs(0); //it's treated as null value 
    elemField.setNillable(false);
    typeDesc.addFieldDesc(elemField);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文