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