2017-06-27 1 views
0

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 ».)

Répondre

1

C'est n'importe qui rien aurait pu jamais trouvé. Le paquet qui casse Hibernate est com.springsource.javax.xml.stream. Je l'ai remplacé par javax.xml.stream et maintenant cela fonctionne.