Folks,
I have the same problem. The interfaces in package javax.persistence in weblogic.jar and ejb3.jar (hibernate) are somehow different! I didn't check the EJB specification.
The code works in Tomcat 5.5/JDK 1.5, but throws exceptions in weblogic 9.1.
Any comment or suggestion is welcome,
Amin Emami
http://www.FourSunIT.com
Exception is like this :
Code:
java.lang.NoSuchMethodError: javax.persistence.TableGenerator.table()Ljava/lang/String;
at org.hibernate.cfg.AnnotationBinder.buildIdGenerator(AnnotationBinder.java:243)
at org.hibernate.cfg.AnnotationBinder.buildLocalGenerators(AnnotationBinder.java:1883)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:544)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:276)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:210)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:997)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:722)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:161)
at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:567)
at org.hibernate.ejb.Ejb3Configuration.createFactory(Ejb3Configuration.java:118)
at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:165)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:103)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:37)
at com.foursun.bonyad.pk.util.hibernate.HibernateUtils.<clinit>(HibernateUtils.java:53)
at com.foursun.bonyad.pk.application.HibernateInitializerPlugin.init(HibernateInitializerPlugin.java:30)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:276)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:68)
at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:493)
at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1688)
at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1665)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1585)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2678)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:874)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:326)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:114)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:25)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:640)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:252)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:154)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:176)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:347)
at weblogic.management.deploy.internal.DeploymentAdapter$1.activate(DeploymentAdapter.java:50)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:232)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:168)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
<Apr 22, 2006 3:59:47 PM GMT+03:30> <Error> <HTTP> <BEA-101216> <Servlet: "action" failed to preload on startup in Web applicati
on: "bonyad".
javax.servlet.UnavailableException: javax.persistence.TableGenerator.table()Ljava/lang/String;
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:368)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:276)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
Truncated. see log file for complete stacktrace
>
Here is a sample :
Weblogic:
Code:
package javax.persistence;
public interface EntityManager {
void create(java.lang.Object object);
<T> T merge(T t);
void remove(java.lang.Object object);
java.lang.Object find(java.lang.String string, java.lang.Object object);
<T> T find(java.lang.Class<T> aClass, java.lang.Object object);
void flush();
javax.persistence.Query createQuery(java.lang.String string);
javax.persistence.Query createNamedQuery(java.lang.String string);
javax.persistence.Query createNativeQuery(java.lang.String string);
void refresh(java.lang.Object object);
void evict(java.lang.Object object);
boolean contains(java.lang.Object object);
}
Hibernate:
Code:
package javax.persistence;
public interface EntityManager {
void persist(java.lang.Object object);
<T> T merge(T t);
void remove(java.lang.Object object);
<T> T find(java.lang.Class<T> aClass, java.lang.Object object);
<T> T getReference(java.lang.Class<T> aClass, java.lang.Object object);
void flush();
void setFlushMode(javax.persistence.FlushModeType flushModeType);
javax.persistence.FlushModeType getFlushMode();
void lock(java.lang.Object object, javax.persistence.LockModeType lockModeType);
void refresh(java.lang.Object object);
void clear();
boolean contains(java.lang.Object object);
javax.persistence.Query createQuery(java.lang.String string);
javax.persistence.Query createNamedQuery(java.lang.String string);
javax.persistence.Query createNativeQuery(java.lang.String string);
javax.persistence.Query createNativeQuery(java.lang.String string, java.lang.Class aClass);
javax.persistence.Query createNativeQuery(java.lang.String string, java.lang.String string1);
void close();
boolean isOpen();
javax.persistence.EntityTransaction getTransaction();
}