users@jaxb.java.net

Exception using JAXB with Struts

From: Jeroen Breedveld <jeroenb_at_x-hive.com>
Date: Thu, 06 Mar 2003 16:31:29 +0100

Hi all,

I'm trying to use JAXB in combination with Struts like this:

    public class UserForm extends ActionForm {
    
      private com.xhive.support.jaxb.User user;
    
      public UserForm() {
        System.out.println("in constructor");
        try {
          JAXBContext jc =
JAXBContext.newInstance("com.xhive.support.jaxb");
          user = new ObjectFactory().createUser();
        } catch (JAXBException e) {
          e.printStackTrace();
        }
      }
    }


the User class is created using JAXB and I use the constructor of the
UserForm class to make an instance of the User class using the default
factories. But when I marshall the User class instance to System.out I
get the exception below. I added some debug output to check if the User
class instance had any information in it I entered in form on a jsp. As
you can see in the output the instance does have my information in it,
namely "Jeroen Breedveld" which I entered in the form.

    public class NewUserAction extends Action {
    
      public ActionForward perform(ActionMapping mapping, ActionForm
form, HttpServletRequest request, HttpServletResponse response) throws
IOException, ServletException {
        try {
          JAXBContext jc =
JAXBContext.newInstance("com.xhive.support.jaxb");
          com.xhive.support.jaxb.User user = ((UserForm)
form).getUser();
          Marshaller m = jc.createMarshaller();
          m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
          System.out.println("user.getName()" + user.getName());
          m.marshal(user, System.out);
        } catch (JAXBException e) {
          e.printStackTrace();
        }
        return mapping.findForward("user-home");
      }
    }

Can anyone tell me what this exception "a required object is missing"
means?

Thanks and regards,

Jeroen Breeveld

output and exception:

in constructor
in constructor
user.getName() Jeroen Breedveld
DefaultValidationEventHandler: [ERROR]: a required object is missing
DefaultValidationEventHandler: [ERROR]: a required object is missing
com.sun.xml.bind.serializer.AbortSerializationException: a required
object is mi ssing
        at
com.sun.xml.bind.marshaller.SAXMarshaller.reportError(SAXMarshaller.j
ava:348)
        at
com.sun.xml.bind.marshaller.Util.handlePrintConversionException(Util.
java:35)
        at
com.xhive.support.jaxb.impl.UserTypeImpl.serializeElements(UserTypeIm
pl.java:402)
        at
com.xhive.support.jaxb.impl.UserImpl.serializeElements(UserImpl.java:
44)
        at
com.sun.xml.bind.marshaller.MarshallerImpl.write(MarshallerImpl.java:
140)
        at
com.sun.xml.bind.marshaller.MarshallerImpl.marshal(MarshallerImpl.jav
a:112)
        at
javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshal
lerImpl.java:73)
        at
com.xhive.support.NewUserAction.perform(NewUserAction.java:28)
        at
org.apache.struts.action.ActionServlet.processActionPerform(ActionSer
vlet.java:1787)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:158
6)
        at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:260)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2396)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:170)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:172)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22
3)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:405)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:380)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:508)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:533)
        at java.lang.Thread.run(Thread.java:536)
--------------- linked to ------------------
javax.xml.bind.MarshalException
 - with linked exception:
[com.sun.xml.bind.serializer.AbortSerializationException: a required
object is m issing]
        at
com.sun.xml.bind.marshaller.MarshallerImpl.write(MarshallerImpl.java:
143)
        at
com.sun.xml.bind.marshaller.MarshallerImpl.marshal(MarshallerImpl.jav
a:112)
        at
javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshal
lerImpl.java:73)
        at
com.xhive.support.NewUserAction.perform(NewUserAction.java:28)
        at
org.apache.struts.action.ActionServlet.processActionPerform(ActionSer
vlet.java:1787)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:158
6)
        at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:260)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2396)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:170)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:172)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22
3)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:405)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:380)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:508)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:533)
        at java.lang.Thread.run(Thread.java:536)

--
X-Hive Corporation
e-mail: jeroenb_at_x-hive.com
phone: +31 10 2818080
http://www.x-hive.com