Jump to: navigation, search

Difference between revisions of "EclipseLink/Examples/MOXy/Spring/JAXBAnnotations"

< EclipseLink‎ | Examples‎ | MOXy‎ | Spring
Line 33: Line 33:
 
</source>
 
</source>
  
== ==
+
== XMLHelper ==
 +
<source lang="java">
 +
package example.gettingstarted;
 +
 
 +
import java.io.IOException;
 +
 
 +
import javax.xml.transform.Result;
 +
import javax.xml.transform.Source;
 +
 
 +
import org.springframework.oxm.XmlMappingException;
 +
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
 +
 
 +
public class XMLHelper {
 +
    private Jaxb2Marshaller marshaller;
 +
 
 +
    public Object load(Source source) throws XmlMappingException, IOException {
 +
        return marshaller.unmarshal(source);
 +
    }
 +
   
 +
    public void save(Object obj, Result result) throws XmlMappingException, IOException {
 +
        marshaller.marshal(obj, result);
 +
    }
 +
 
 +
    public void setMarshaller(Jaxb2Marshaller marshaller) {
 +
        this.marshaller = marshaller;
 +
    }
 +
}
 +
</source>

Revision as of 12:45, 27 July 2010


In order to use EclipseLink JAXB with Spring, all that is required is a jaxb.properties file and eclipselink.jar. No other special configuration is required. This example will demonstrate how to configure Spring to use EclipseLink JAXB.

EclipseLink

The latest version of EclipseLink can be found on the EclipseLink download page. eclipselink.jar needs to be on the classpath.

jaxb.properties

Following is the jaxb.properties file that tells Spring to use EclipseLink JAXB - this file needs to be on the classpath:

javax.xml.bind.context.factory = org.eclipse.persistence.jaxb.JAXBContextFactory

Jaxb2Marshaller

Spring supports both the JAXB 1.0 and the JAXB 2.0 API as XML marshalling strategies. EclipseLink JAXB implements JAXB 2, so for this example we will make use of the org.springframework.oxm.jaxb.Jaxb2Marshaller class.

Configuration: applicationContext.xml

This configuration file will be used to configure the beans used in this example.

<?xml version="1.0" encoding="UTF-8"?>
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="contextPath" value="example.gettingstarted"/>
    </bean>
    <bean id="xmlHelper" class="example.gettingstarted.XMLHelper">
        <property name="marshaller" ref="jaxbMarshaller"/>
    </bean>
</beans>

XMLHelper

package example.gettingstarted;
 
import java.io.IOException;
 
import javax.xml.transform.Result;
import javax.xml.transform.Source;
 
import org.springframework.oxm.XmlMappingException;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
 
public class XMLHelper {
    private Jaxb2Marshaller marshaller;
 
    public Object load(Source source) throws XmlMappingException, IOException {
        return marshaller.unmarshal(source);
    }
 
    public void save(Object obj, Result result) throws XmlMappingException, IOException {
        marshaller.marshal(obj, result);
    }
 
    public void setMarshaller(Jaxb2Marshaller marshaller) {
        this.marshaller = marshaller;
    }
}