UPDATE
This question may be referring to the role of ObjectFactory in creating a JAXBContext. If you bootstrap a JAXBContext on a context path then it will check for an ObjectFactory in that location in order to determine the classes in that package:
If you do not have an ObjectFactory but still wish to create you JAXBContext on a context path you can include a file called jaxb.index in that package listing files to be included in the JAXBContext (referenced classes will automatically pulled in):
Alternatively you can bootstrap you JAXBContext on an array of classes instead of a context path:
Is ObjectFactory Required
An ObjectFactory is not required, although even when starting from Java classes there are use cases where you can leverage a similar class annotated with @XmlRegistry in order to use the @XmlElementDecl annotation.
Creating an Instance of JAXBElement
You can always create the JAXBElement directly:
final JAXBElement<WebLeads> webLeadsElement = new JAXBElement<WebLeads>(
new QName("root-element-name"),
WebLeads.class,
webLeadsJavaObj);
Alternative to JAXBElement
Or since JAXBElement is simply used to provide root element information, you can annotate your WebLeads class with @XmlRootElement:
@XmlRootElement(name="root-element-name")
public class WebLeads {
...
}