Je suis en train de faire fonctionner Hibernate avec OSGi, donc la base de ce projet est org.hibernate.osgi
.Hibernate: Provider com.bea.xml.stream.EventFactory non trouvé
J'ai créé un persistence.xml et essayé d'y accéder avec le code suivant:
BundleContext context = FrameworkUtil.getBundle(getClass()).getBundleContext();
ServiceReference serviceReference = context.getServiceReference(PersistenceProvider.class.getName());
PersistenceProvider persistenceProvider = (PersistenceProvider) context.getService(serviceReference);
EntityManagerFactory emf = persistenceProvider.createEntityManagerFactory("DemoUnit", null);
Pour une raison quelconque, lors de la création du EntityManagerFactory
, il y a l'exception suivante:
javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.EventFactory not found
at javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:72)
at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:178)
at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:92)
at javax.xml.stream.XMLEventFactory.newInstance(XMLEventFactory.java:30)
at org.hibernate.boot.jaxb.internal.MappingBinder.<init>(MappingBinder.java:40)
at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43)
at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:208)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:177)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:83)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:186)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:126)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:81)
at org.hibernate.osgi.OsgiPersistenceProvider.createEntityManagerFactory(OsgiPersistenceProvider.java:77)
at org.acme.project.MyTest.getFactory(MyTest.java:28)
Je suppose qu'il s'agit d'un bug, car je ne trouve pas le paquet com.bea.xml.stream
dans un référentiel P2 ni Maven central.
Mais comment Hibernate peut-il prendre n'importe quel autre fournisseur XML?
(Ou tout com.bea.xml.stream
pourrait être. Au moins le code tente de lancer ce « EventFactory » à « XMLEventFactory ».)