1 /*
2 * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3 * the spring framework, http://el4j.sf.net
4 * Copyright (C) 2005 by ELCA Informatique SA, Av. de la Harpe 22-24,
5 * 1000 Lausanne, Switzerland, http://www.elca.ch
6 *
7 * EL4J is published under the GNU Lesser General Public License (LGPL)
8 * Version 2.1. See http://www.gnu.org/licenses/
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * For alternative licensing, please contact info@elca.ch
16 */
17 package ch.elca.el4j.services.remoting.jaxb.hibernate;
18
19 import java.util.List;
20
21 import javax.xml.bind.JAXBContext;
22 import javax.xml.bind.JAXBException;
23
24 import com.sun.xml.bind.api.JAXBRIContext;
25 import com.sun.xml.bind.api.TypeReference;
26 import com.sun.xml.bind.v2.ContextFactory;
27 import com.sun.xml.bind.v2.model.annotation.RuntimeInlineAnnotationReader;
28 import com.sun.xml.ws.api.model.SEIModel;
29 import com.sun.xml.ws.developer.JAXBContextFactory;
30
31 /**
32 * A customized {@link JAXBContext} that enables the {@link JAXBRIContext#XMLACCESSORFACTORY_SUPPORT}
33 * in order to getting rid of the LazyInitializationException when using JAXB together with Hibernate.
34 *
35 * @svnLink $Revision: 3945 $;$Date: 2009-10-16 09:31:52 +0200 (Fr, 16. Okt 2009) $;$Author: swismer $;$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/branches/el4j_3_1/el4j/framework/modules/remoting_jaxws/src/main/java/ch/elca/el4j/services/remoting/jaxb/hibernate/JAXBContextFactoryImpl.java $
36 *
37 * @author Do Phuong Hoang (PHD)
38 */
39 public class JAXBContextFactoryImpl implements JAXBContextFactory {
40
41 @Override
42 public JAXBRIContext createJAXBContext(SEIModel seiModel, List<Class> classes, List<TypeReference> typeRefs)
43 throws JAXBException {
44 return ContextFactory.createContext(classes.toArray(new Class[classes.size()]), typeRefs, null, null, false,
45 new RuntimeInlineAnnotationReader(), true, false);
46 }
47
48 }