के साथ मैं टॉमकैट 5.5.26 में एम्बेडेड ओपनईजेबी 3.1.3 का उपयोग कर रहा हूं और मैं जेपीए प्रदाता के रूप में हाइबरनेट 3.6 का उपयोग करता हूं।ओपनईजेबी टॉमकैट और हाइबरनेट और जेपीए
@Stateless
public class MapSearchManager implements MapSearchLocal, MapSearchRemote {
@PersistenceContext
private EntityManager em;
...
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public int queryDataSelectionNumRecords(MapSearchParamBean paramBean) {
Criteria c = createCriteria(paramBean);
c.setProjection(Projections.rowCount());
List l = c.list();
...
}
...
}
जब मैं OpenEJB और उस में मेरे ऐप युद्ध अभिलेखागार के साथ बिल्ला चलाने के लिए, तैनाती अपवाद स्टैक ट्रेस के साथ विफल:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="manager1" transaction-type="JTA">
<!-- provider is optional if you work with only 1 JPA provider -->
<!--
<provider>org.hibernate.ejb.HibernatePersistence</provider>
-->
<jta-data-source>java:/DefaultDS</jta-data-source>
<!--
<properties>
<property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml" />
</properties>
-->
</persistence-unit>
</persistence>
यहाँ मेरी कोड है:
यहाँ मेरी persistence.xml है:
2010-10-27 18:13:35,374 - ERROR - Unable to deploy collapsed ear in war /wma: Exception: Creating application failed: C:\apache-tomcat-5.5.26\webapps\wma: javax/persistence/spi/ProviderUtil
org.apache.openejb.OpenEJBException: Creating application failed: C:\apache-tomcat-5.5.26\webapps\wma: javax/persistence/spi/ProviderUtil
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:666)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:449)
at org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.start(TomcatWebAppBuilder.java:249)
at org.apache.openejb.tomcat.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:58)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4148)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:179)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:489)
... 27 more
खोज करने पर, मैंने पाया वर्ग javax/persistence/spi/ProviderUtil
Jav का हिस्सा है एक ईई 6/जेपीए 2.0 spec, जो OpenEJB द्वारा समर्थित नहीं है। लेकिन मैं अपने ऐप में नहीं सोचता कि मैं किसी भी जेपीए 2.0 का उपयोग करता हूं। मैं विशेष रूप से 1.0 के persistence.xml में उल्लेख करते हैं। मुझे पता है कि हाइबरनेट 3.6 जेपीए 2.0 का समर्थन करता है। मुझे नहीं पता कि हाइबरनेट की मानदंड एपीआई जेपीए 2.0 का हिस्सा है, लेकिन समस्या का कारण नहीं बनना चाहिए क्योंकि मैंने विशेष रूप से persistence.xml में 1.0 का उल्लेख किया है।
आपकी मदद के लिए धन्यवाद।
सादर
विल
धन्यवाद पास्कल। नेट पर हाइबरनेट-जेपीए संस्करण मिलान के बारे में ज्यादा जानकारी नहीं है। तो क्या आपका मतलब है कि हाइबरनेट एंटिटी मैनेजर और एनोटेशन प्रोजेक्ट जेपीए 1.0 विनिर्देशन के कार्यान्वयन हैं, और हाइबरनेट कोर प्रोजेक्ट में कोर हाइबरनेट (गैर-जेपीए इम्प्लायर) और जेपीए 2.0 इम्प्लाइट शामिल है? एक बार फिर धन्यवाद। –