Changing Persistence Unit (JPA)

I’m developing a Java SE application using JPA.
At runtime, the application needs to connect to different databases, each one with the same structure but different data (for example one database for each company).
I can’t define in advance different Persistence Units in the persistence.xml file, because the user decides when and how many db will create.
Is there some way to manipulate de persistence.xml file at runtime (for example change the PU name) without recompile the application?
Thanks for your help.

Yes, I found the solution.
I use the method to obtain a EntityManager with a HashMap parameter, where I can put the name of the database. Example:
String dbURL = "jdbc:mysql://localhost:3306/" + "myDataBaseName";
HashMap<String, String> propMap;
propMap = new HashMap<String, String>();
propMap.put("toplink.jdbc.url", dbURL);
EntityManager em = Persistence.createEntityManagerFactory("myPU", propMap).createEntityManager();
This overrides de property in the persistence.xml file.
Hope it help you.
Regards

Similar Messages

  • Problems with NWDS 7.1 EHP1 and JPA persistence unit

    In EJB project with JPA Facet Iu2019m working without any problem for several days. But, after two weeks, JPA plug-in of Eclipse is not working fine.
    When I try to generate DDL Iu2019m getting the following error window:  There isnu2019t a registered persistence unit in the project. But this is not true. Curiously sometimes it works fine.
    Can any body has any suggestion for correcting this issue?
    Thanks in advanced.

    Hi,
    I had the same problem and luckily stumbled upon the solution today.
    1. File persistence.xml is located in /ejbModule/META-INF. Path /build/classes is empty.
    2. Right-click on the DC/project and select "Properties".
    3. In "JPA", change parameter "Platform" or "Connection", then restore the original value. The purpose is to set a dirty flag which will make the IDE generate the missing stuff in path build/classes.
    4. A copy of resource branch META-INF and the .classes files will appear below /build.
    5. Right-click on the DC/Project and select "JPA-Tools -> Generate DDL".
    Please let me know if it works for you.
    Cheers,
    Thorsten

  • Duplicate persistence units in JPA weblogic

    Hello, I'm cross-posting thsi question from weblogic forum as a suggestion from james.bayer.
    I am using weblogic 10.3.
    I am trying to deploy a spring web application with severaljars, that contain jpa entities with a persistence.xml. The persistence unit name in all persistence.xml are equal. That is for spring no problem, because i wrote a PersistenceUnitManager, that merges all persistence units into one.
    So far so good. But weblogic cant't deploy the war, because while validation of the deployment, wls throws an exception, that there are two persistence unit with the same name.
    Does anybody has an idea how to deploy this war?
    Can i switch off the validation of the persistence.xml?
    The full stack trace is:
    weblogic.application.ModuleException: Failed to load webapp: 'sfw-poc-condicao-pagamento-web.war'
         at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:404)
         at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:180)
         at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
         at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:508)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
         at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:149)
         at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:47)
         at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:1223)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
         at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:367)
         at weblogic.application.internal.SingleModuleDeployment.prepare(SingleModuleDeployment.java:43)
         at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
         at weblogic.deploy.internal.targetserver.AppDeployment.prepare(AppDeployment.java:141)
         at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:40)
         at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:191)
         at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:22)
         at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
         at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:166)
         at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
         at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
         at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
         at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused By: weblogic.deployment.EnvironmentException: duplicate persistence units with name sfw-persistence-unit in scope sfw-poc-condicao-pagamento-web.war. First PU location: file:/C:/java/servers/Oracle/Middleware/user_projects/domains/base_domain/servers/softway/tmp/_WL_user/sfw-poc-condicao-pagamento-web/rrg25b/war/WEB-INF/lib/sfw-class-loader-0.0.1-SNAPSHOT.jar. Second PU location: file:/C:/java/servers/Oracle/Middleware/user_projects/domains/base_domain/servers/softway/tmp/_WL_user/sfw-poc-condicao-pagamento-web/rrg25b/war/WEB-INF/lib/sfw-custom-jar-0.0.1-20100622.030351-65.jar
         at weblogic.deployment.AbstractPersistenceUnitRegistry.assertNoDuplicate(AbstractPersistenceUnitRegistry.java:313)
         at weblogic.deployment.AbstractPersistenceUnitRegistry.processDescriptor(AbstractPersistenceUnitRegistry.java:291)
         at weblogic.deployment.AbstractPersistenceUnitRegistry.loadPersistenceDescriptor(AbstractPersistenceUnitRegistry.java:192)
         at weblogic.deployment.AbstractPersistenceUnitRegistry.loadPersistenceDescriptors(AbstractPersistenceUnitRegistry.java:101)
         at weblogic.deployment.ModulePersistenceUnitRegistry.<init>(ModulePersistenceUnitRegistry.java:58)
         at weblogic.servlet.internal.WebAppModule.setupPersistenceUnitRegistry(WebAppModule.java:1812)
         at weblogic.servlet.internal.WebAppModule.getWebClassLoader(WebAppModule.java:1604)
         at weblogic.servlet.internal.WebAppServletContext.initClassLoader(WebAppServletContext.java:2969)
         at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:438)
         at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:487)
         at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:418)
         at weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:976)
         at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:381)
         at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:180)
         at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
         at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:508)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
         at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:149)
         at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:47)
         at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:1223)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
         at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:367)
         at weblogic.application.internal.SingleModuleDeployment.prepare(SingleModuleDeployment.java:43)
         at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
         at weblogic.deploy.internal.targetserver.AppDeployment.prepare(AppDeployment.java:141)
         at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:40)
         at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:191)
         at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:22)
         at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
         at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:166)
         at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
         at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
         at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
         at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Thanks a lot

    They need to have different names.
    James : http://www.eclipselink.org

  • Toplink JPA properties in persistence unit are ignored

    I'm trying to make some EJB3 stateless session bean webservices, using the toplink essentials (build b41 beta 2) shipped with OC4J stand-alone 10.1.3.3.0.
    Basically I have a 'model' project with my EJB3 entity beans, and a persistence.xml. Then I have a webservice project, that has the model project as a dependency. Both projects are in the same application in JDeveloper. I use a deployment profile to deploy to my seperate OC4J stand-alone instance.
    My service runs and deploys fine. The persistence unit is read, and the correct datasource is selected and logged in on. However I notice two things:
    - the container complains during deployment, telling me property toplink.server.platform.class.name is deprecated and I should use toplink.target-server. However, I've set the property toplink.target-server as a property in my persistence.xml file...
    - I don't see any Toplink logging, although I've set the property toplink.logging.level to FINE in the persistence.xml.
    This leads me to believe that the properties are somehow ignored. Has anyone experienced this as well? Any hints/tips/suggestions on how to fix this?
    Cheers,
    Bas
    My persistence.xml:
    <?xml version="1.0" encoding="windows-1252" ?>
    <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"
                 version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
      <persistence-unit name="VervoerPublicatiesPU" transaction-type="JTA">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <jta-data-source>jdbc/SQLPUBDS</jta-data-source>
        <class>a.b.c.A</class>      
        <class>a.b.c.B</class>
        <properties>
            <property name="toplink.logging.level" value="FINE"/>
            <property name="oracle.toplink.essentials.config.CacheType" value="SoftWeak"/>
            <property name="toplink.target-database" value="SQLServer"/>
            <property name="toplink.target-server" value="OC4J_10_1_3"/>
        </properties>
      </persistence-unit>
    </persistence>

    I debugged this problem a few weeks ago. There are 2 things going on:
    1. The EJB3 container is automatically adding the property 'toplink.server.platform.class.name' into what is passed to TopLink to ensure the proper container is configured. I have had a bug filed to get this changed to toplink.target-server in the 10.1.3.4 patch-set.
    2. The logging by default goes into the OC4J log found in <HOME>\j2ee\home\log\oc4j
    You can re-configure OC4J to also log these messages to stdout or if you only want them to stdout you can simply set the logging-type in the persistence unit properties.
          <property name="toplink.logging.logger" value="DefaultLogger"/>Doug

  • Changing a Persistence Unit at runtime

    Is it possible at runtime of an EJB to change the Persistence Unit that it refers to? What if I don't know what copy of a DB my user wants to connect to until runtime?
    I guess I really just need to be able to change the DataSource that the PersistenceUnit refers to, right? Is that possible?

    No, there's no portable way to do this.
    --ken                                                                                                                                                                                                               

  • Weblogic 12c not picking up persistence unit in WAR

    I'm trying to get an example CRUD application to run on WebLogic 12c (for the app see: http://henk53.wordpress.com/2012/04/15/jsf2-primefaces3-ejb3-jpa2-integration-project/)
    So far the applications runs on JBoss AS 7.1, GlassFish 3.1.2 and TomEE beta 2. In all those application servers persistence.xml is picked-up, and processed so I'm at a loss what's wrong with WebLogic. I'm using Eclipse 3.7.2 and the Oracle WebLogic 12C WTP server adapter for the deployment.
    I'm getting the following exception:
    java.lang.IllegalArgumentException: No persistence unit named 'entityManager' is available in scope jsf_ejb_jpa. Available persistence units: []
         at weblogic.persistence.ModulePersistenceUnitRegistry.getPersistenceUnit(ModulePersistenceUnitRegistry.java:130)
         at weblogic.persistence.BasePersistenceContextProxyImpl.<init>(BasePersistenceContextProxyImpl.java:40)
         at weblogic.persistence.TransactionalEntityManagerProxyImpl.<init>(TransactionalEntityManagerProxyImpl.java:31)
         at weblogic.persistence.EntityManagerInvocationHandlerFactory.createTransactionalEntityManagerInvocationHandler(EntityManagerInvocationHandlerFactory.java:20)
         at weblogic.persistence.PersistenceManagerObjectFactory.createPersistenceContextProxy(PersistenceManagerObjectFactory.java:66)
         at weblogic.persistence.PersistenceManagerObjectFactory.getObjectInstance(PersistenceManagerObjectFactory.java:31)
         at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
         at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:251)
         at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:406)
         at weblogic.j2eeclient.java.ClientReadOnlyContextWrapper.lookup(ClientReadOnlyContextWrapper.java:35)
         at weblogic.jndi.internal.AbstractURLContext.lookup(AbstractURLContext.java:130)
         at javax.naming.InitialContext.lookup(InitialContext.java:392)
         at javax.naming.InitialContext.doLookup(InitialContext.java:265)
         at com.oracle.pitchfork.inject.Jsr250Metadata.jndiLookup(Jsr250Metadata.java:307)
         at com.oracle.pitchfork.inject.Jsr250Metadata.resolveByName(Jsr250Metadata.java:303)
         at com.oracle.pitchfork.inject.Jsr250Metadata.resolve(Jsr250Metadata.java:266)
         at com.oracle.pitchfork.inject.Jsr250Metadata.applyInjections(Jsr250Metadata.java:228)
         at com.oracle.pitchfork.inject.Jsr250Metadata.inject(Jsr250Metadata.java:219)
         at com.oracle.pitchfork.spi.BaseComponentBrokerImpl.getBean(BaseComponentBrokerImpl.java:63)
         at com.oracle.pitchfork.spi.EjbComponentCreatorBrokerImpl.getBean(EjbComponentCreatorBrokerImpl.java:33)
         at weblogic.ejb.container.injection.EjbComponentCreatorImpl.getBean(EjbComponentCreatorImpl.java:76)
         at weblogic.ejb.container.manager.BaseEJBManager.createNewBeanInstance(BaseEJBManager.java:209)
         at weblogic.ejb.container.manager.BaseEJBManager.allocateBean(BaseEJBManager.java:235)
         at weblogic.ejb.container.manager.StatelessManager.createBean(StatelessManager.java:293)
         at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:185)
         at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:114)
         at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:174)
         at weblogic.ejb.container.internal.BaseLocalObject.getBeanInstance(BaseLocalObject.java:146)
         at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:103)
         at weblogic.ejb.container.internal.BaseLocalObject.__WL_preInvoke(BaseLocalObject.java:67)
         at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:20)
         at com.example.dao.jpa.JpaUserDAO_wrkew_UserDAOImpl.add(Unknown Source)
         at com.example.backing.IndexBacking.addUser(IndexBacking.java:38)
    Notice that "entityManager" is the name of the instance variable in which injection is being performed:
    @PersistenceContext(name="example")
    private EntityManager entityManager;
    If I rename this variable to "em: as follows:
    @PersistenceContext(name="example")
    private EntityManager em;
    Then, lo and behold, the exception changes into:
    java.lang.IllegalArgumentException: No persistence unit named 'em' is available in scope jsf_ejb_jpa. Available persistence units: []
    As the example uses a data-source defined in web.xml, which is only marginally supported in most application servers, I tried to define a WebLogic specific application scoped data-source instead and let the persistence unit use that. I couldn't find a way to do this in a .war (is this even possible?), so I created an .ear archive instead. When deploying the EAR, the data-source is clearly being created, but I'm getting the same exception again.
    I finally created an EJB module with a persistence.xml and a simple Singleton that's injected with the entityManager, and added that to the EAR. This works for the EJB module, but in the web module injection of the other entity manager still fails.
    Any idea what might be the problem?

    After some more fiddling, I discovered it's not WebLogic itself that's at fault here, but most likely Oracle's WTP adapter. Apparently it doesn't include persistence.xml in the archive that gets deployed. When I export the project as an .ear archive and copy this to WebLogic's autodeploy directly, things do work.
    I tried to find out what the main difference was between the deployments, but I could not find where the Oracle WTP adapter creates the deployment. I tried to test where a resource inside the EAR resides on the filesystem via the following code inside a backing bean:
    URL url = Thread.currentThread().getContextClassLoader().getResource("com/example/backing");
    It looks like there isn't a real .war or .ear being created and deployed, but there's a link back to the workspace, as the URL resolves to:
    file:/Users/henk/eclipse37ee/workspace/jsf_ejb_jpa/build/classes/com/example/backing/
    If I execute the same code for the ear in the autodeploy folder, the URL resolves to some jar inside:
    /Users/henk/eclipse37ee/wls1211_dev/mydomain/servers/myserver/tmp/_WL_user/_appsdir_jsf_ejb_jpa_ear_ear/2jzks6/war/WEB-INF/lib/
    In case of the WTP 'deployment' linking back to the Eclipse workspace, META-INF/persistence.xml is actually there too, but for some reason Weblogic can't find it there?
    Edited by: Henk on Apr 29, 2012 2:57 PM

  • Problems with duplicate persistence units

    I suppose that Weblogic 10.3 do not support some locations of persistence.xml.
    For example. On Jboss server I can succesfully deploy ear with this structure
    -services-ejb.jar
    -services-ws.jar
    -/APP-INF/lib
    -/APP-INF/lib/services-jpa.jar with persistence.xml i META-INF
    -/META-INF/application.xml
    But on Weblogic 10.3 it is impossible. Weblogic got an error with duplicate PU in the same location...
    <2009-06-04 16:06:18 CEST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
    weblogic.management.DeploymentException:
    at weblogic.application.internal.flow.JpaFlow.prepare(JpaFlow.java:59)
    weblogic.deployment.EnvironmentException: duplicate persistence units with name servicesJPA in scope services-ear.
    First PU location: file:D:/apache/bea10.3/wlserver_10.3/samples/domains/wl_server/servers/examplesServer/tmp/_WL_user/services-ear/skzpn4/APP-INF/lib/services-jpa.jar.
    Second PU location: file:D:/apache/bea10.3/wlserver_10.3/samples/domains/wl_server/servers/examplesServer/tmp/_WL_user/services-ear/skzpn4/APP-INF/lib/services-jpa.jar
    My application.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
    <description>services ear</description>
    <display-name>services-ear</display-name>
    <module>
    <ejb>services-ejb.jar</ejb>
    </module>
    <module>
    <web>
    <web-uri>services-ws.war</web-uri>
    <context-root>/services-ws</context-root>
    </web>
    </module>
    <library-directory>APP-INF/lib</library-directory>
    </application>
    Is any solution to keep persistence in library directory?

    Edwin,
    I have tried the same thing that you describe in question one in the attached VI. If you change the data ranges and then run the VI, you will note that the numeric value will only ba allowed in the new range. (If the current value is outside of the range that you have set, then you will need to change the value of the cotrol to be in the new range before the new range properties will take effect.)
    As for your second question, can you expand upon this? I am not sure that I understand what you mean. Is an example VI possible? Thanks
    Randy Hoskin
    Applications Engineer
    National Instruments
    http://www.ni.com/ask
    Attachments:
    Data_Range_with_Units.vi ‏22 KB

  • Classpath problem when deploying a persistence unit (in JBoss)

    Hello,
    I have a JAR file containing an EJB with a persistence.xml file.
    I also have another JAR project containing a persistent annotated POJO class that the persistence unit is supposed to map.
    I defined the class in the persistence unit using a class XML element, but because it's in another JAR, the persistence unit implementation cannot find it. I tried to use a jar-file element instead and specify the name of the JAR containing the POJO, and from the log it seems the class is found and identified as persistent, but then the actual mapping operation fails because of the same reason! I also tried to edit the classpath property in the EJB JAR's manifest fileto include the POJO JAR, but that did not help too...
    Does anyone know what I'm missing here and how to make the persistence unit succeed in mapping the POJO class?
    Thanks.

    Ok, some more details regarding the problem:
    Here is the persistence unit definition:
    <persistence-unit name="NorthwindPU" transaction-type="JTA">
              <provider>org.hibernate.ejb.HibernatePersistence</provider>
              <jta-data-source>jdbc/NorthwindDB</jta-data-source>
              <!-- <class>personal.test.domain_layer.Product</class> -->
              <jar-file>TestProjectPersistence.jar</jar-file>
              <properties>
                   <property name="hibernate.transaction.factory_class"
                        value="org.hibernate.transaction.CMTTransactionFactory"/>
                   <property name="hibernate.transaction.manager_lookup_class"
                        value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
                   <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
                   <property name="hibernate.current_session_context_class" value="jta"/>
              </properties>
    </persistence-unit>Here is the stack trace I get when starting the server and deploying the application:
    javax.persistence.PersistenceException: [PersistenceUnit: NorthwindPU] class or package not found
         at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1093)
         at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:871)
         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:758)
         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:425)
         at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:131)
         at org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:301)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
         at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
         at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
         at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
         at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
         at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
         at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
         at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
         at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
         at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
         at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
         at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
         at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
         at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
         at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
         at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
         at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
         at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:121)
         at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:51)
         at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
         at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
         at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
         at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
         at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
         at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
         at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1210)
         at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
         at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
         at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
         at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
         at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
         at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
         at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
         at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
         at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:698)
         at org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:304)
         at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:205)
         at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:405)
         at org.jboss.Main.boot(Main.java:209)
         at org.jboss.Main$1.run(Main.java:547)
         at java.lang.Thread.run(Unknown Source)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Getting a datasource from a persistence-unit

    Is there any way to get the name of the datasource (non-jta or jta) from a persistence unit via the EntityManagerFactory or EntityManager instances?
    We need to do some JDBC work (for exotic data types) and are currently parsing the persistence.xml file ourselves to get the data source name (which is an awful thing to do) but would much rather be able to say Connection conn = Utility.getConnection(EntityManger em) or even String datasource = Utility.getDataSource(EntityManager em).
    Thanks, Mark

    Mark,
    Hi, I tried non-JTA code on OC4J.
    Try the following change acc.getDatasourceConnection() - tested on OC4J 10.1.3.4 using a RESOURCE_LOCAL non-JTA connection to Oracle 10g entityManager on a servlet.
    I get the same oracle.jdbc.driver.T4CConnection@18d702e connection to my Oracle 10 db from either the .getConnection() or .getDatasouceConnection() call - verify your persistence.xml properties
    <property name="eclipselink.target-server" value="OC4J"/>
    <property name="eclipselink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="eclipselink.jdbc.platform" value="org.eclipse.persistence.platform.database.oracle.OraclePlatform"/>
         if (acc != null) {
         //conn = acc.getConnection(); // returns null (I get the same T4CConnection)
         conn = (Connection)acc.getDatasourceConnection(); // returns oracle.jdbc.driver.T4CConnection
    [EL Finer]: 2008.09.30 17:03:07.905--ServerSession(24691161)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--client acquired
    [EL Finer]: 2008.09.30 17:03:13.061--UnitOfWork(18699935)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--acquire unit of work: 11546616
    08/09/30 17:03:20 __Connection: oracle.jdbc.driver.T4CConnection@18d702e
    I suspect you are running a RESOURCE_LOCAL entitymanager on your servlet client (not on an EJB) that defines all database properties like 3) below.
    like
    public class FrontController extends HttpServlet implements Servlet {
         public EntityManagerFactory emf = Persistence.createEntityManagerFactory("unified");
         public EntityManager entityManager = emf.createEntityManager();
    not
    @Local @Stateless
    public class ApplicationService implements ApplicationServiceLocal {
         @PersistenceContext(unitName="unified",type=PersistenceContextType.TRANSACTION)     
         private EntityManager entityManager;
    1) JTA on OC4J - NOPE
    Debugging in to UnitOfWorkImpl - I see the oracle.oc4j.sql.ManagedDataSource@202088
    However, I think this is still a tx datasource because usesExternalTransactionController = true
    uow     UnitOfWorkImpl (id=534)     
         project     Project (id=573)     
              datasourceLogin     DatabaseLogin (id=582)     
                   connector     JNDIConnector (id=592)     
                        dataSource     ManagedDataSource (id=599)     
                             m_connectionManger     OracleConnectionManager (id=613)     
                             m_connectionRetryInterval     1     
                             m_dataSourceName     "OracleDS" (id=619)     
                             m_debug     ManagedDataSourceDebugInfo (id=620)     
                             m_dmsConnectionStatMap     WeakHashMap<K,V> (id=622)     
                             m_loginTimeout     0     
                             m_logWriter     null     
                             m_managedConnectionFactory     ManagedConnectionFactoryImpl (id=624)     
                             m_manageLocalTransactions     true     
                             m_manageSqlObjects     "basic" (id=626)     
                             m_maxConnectAttempts     3     
                             m_mBean     ManagedJDBCDataSource (id=632)     
                             m_password     null     
                             m_reference     null     
                             m_unStattedConnections     WeakHashMap<K,V> (id=698)     
                             m_unStattedConnectionsLock     Object[0] (id=658)     
                             m_url     null     
                             m_user     null     
                   usesExternalTransactionController     true     
    Using your getConnection(EntityManager em) code:
    acc     DatabaseAccessor (id=537)     
         datasourceConnection     null     
    using:
    <persistence-unit name="unified" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <non-jta-data-source>jdbc/OracleDS</non-jta-data-source>
    <properties>
    <property name="eclipselink.target-server" value="OC4J"/>
    2) non-JTA on OC4J - NOPE
    using..
    entityManager.getTransaction().begin(); // non-JTA
    System.out.println("__Connection: " + getConnection(entityManager));
    on..
    <persistence-unit name="unified" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <non-jta-data-source>jdbc/OracleDS</non-jta-data-source>
    does not work with...
         @PersistenceContext(unitName="unified",type=PersistenceContextType.TRANSACTION)     
         private EntityManager entityManager;
    08/09/30 16:45:59 Exception: Cannot use resource level transactions with a container managed EntityManager
    3) non-JTA, non container managed on OC4J - YES
    using..
         // Local non-JTA application managed EMF and EM
         public EntityManagerFactory emf = Persistence.createEntityManagerFactory("unified");
         public EntityManager entityManager = emf.createEntityManager();
    persistence.xml
    <persistence-unit name="unified" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
    <property name="eclipselink.target-server" value="OC4J"/>
    <property name="eclipselink.logging.level" value="FINEST"/>
    <property name="eclipselink.session-name" value="eclipselinkwls"/>
    <property name="eclipselink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="eclipselink.jdbc.platform" value="org.eclipse.persistence.platform.database.oracle.OraclePlatform"/>
    <property name="eclipselink.jdbc.url" value="jdbc:oracle:thin:@x.x.x.x:1521:orcl"/>
    <property name="eclipselink.jdbc.user" value="scott"/>
    <property name="eclipselink.jdbc.password" value="password...."/>
    uow     UnitOfWorkImpl (id=518)     
         platform     Oracle10Platform (id=544)     
         project     Project (id=527)     
              aliasDescriptors     null     
              datasourceLogin     DatabaseLogin (id=533)     
                   cacheTransactionIsolation     5     
                   connectionHealthValidatedOnError     true     
                   connector     DefaultConnector (id=542)     
                        connectDirectly     true     
                        databaseURL     "jdbc:oracle:thin:@10.156.53.19:1521:orcl" (id=555)     
                        driver     OracleDriver (id=556)     
                        driverClass     Class<T> (oracle.jdbc.driver.OracleDriver) (id=557)     
                        driverClassName     "oracle.jdbc.driver.OracleDriver" (id=558)     
                        driverURLHeader     "" (id=560)     
    oracle.jdbc.driver.T4CConnection@18d702e
    acc     DatabaseAccessor (id=571)     
         activeBatchWritingMechanism     ParameterizedSQLBatchWritingMechanism (id=575)     
         datasourceConnection     T4CConnection (id=579)     
              database     "x.x.x.x:1521:orcl" (id=638)     
              databaseMetaData     OracleDatabaseMetaData (id=639)     
              databaseProductVersion     "Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production\nWith the Partitioning, OLAP and Data Mining options" (id=641)     
              thinVsessionProgram     "JDBC Thin Client" (id=736)     
              thinVsessionTerminal     "unknown" (id=737)     
              timeout     null     
              timestamptzInGmt     true     
              txnLevel     2     
              txnMode     0     
              url     "jdbc:oracle:thin:@x.x.x.x:1521:orcl" (id=738)     
              useFetchSizeWithLongColumn     false     
              userName     "SCOTT" (id=739)     
              usingXA     false     
              ver     T4C7Oversion (id=740)     
              versionNumber     10201     
              walletLocation     null     
              whichDMS     2     
              wrapper     null     
              xaWantsError     false     
    With the following change...
         public Connection getConnection(EntityManager em) {
         Connection conn = null;
         if (em != null && em.isOpen()) {
         JpaEntityManager jem = (JpaEntityManager)em.getDelegate();
         if (jem != null) {
         Session session = jem.getActiveSession();
         if (session != null) {
         UnitOfWorkImpl uow = (UnitOfWorkImpl)session.acquireUnitOfWork();
         if (uow != null) {
         Accessor acc = uow.getAccessor();
         if (acc != null) {
         //conn = acc.getConnection(); // returns null (I get the same T4CConnection)
         conn = (Connection)acc.getDatasourceConnection(); // returns oracle.jdbc.driver.T4CConnection
         return conn;
    we get...
    [EL Finer]: 2008.09.30 17:03:07.905--ServerSession(24691161)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--client acquired
    [EL Finer]: 2008.09.30 17:03:13.061--UnitOfWork(18699935)--Thread(Thread[HTTPThreadGroup-1,9,HTTPThreadGroup])--acquire unit of work: 11546616
    08/09/30 17:03:20 __Connection: oracle.jdbc.driver.T4CConnection@18d702e
    thank you
    [email protected]

  • Persistence-unit-defaults in orm.xml do not impact TopLink Essentials?

    Hi,
    I have configured a default schema in the persistence-unit-defaults section of the orm.xml mapping file:
    <persistence-unit-metadata>
         <persistence-unit-defaults>
              <schema>SCHEMA_NAME</schema>     
         </persistence-unit-defaults>
    </persistence-unit-metadata>
    The queries that TopLink JPA is generating (and logging) do not qualify any table name with the schema as configured above. It seems that the persistence-unit-default settings are ignored by TopLink JPA?
    N.B: TopLink mentions that it is searching for a file named orm.xml and that it found one - so the file should be processed by TopLink. ("Found a default mapping file at ...")
    Any ideas?

    Thank you for mentioning that workaround.
    Regarding to the results of my tests, the persistence-unit-defauls "schema" does not affect sequences? Is this part of the bug and can expected to be fixed or is the schema/owner of sequences outside the JPA spec?
    currently I found no other solution than to specify the default schema in the persistence-unit-defaults in orm.xml AND declarate all sequences used with the fully qualified name, i.e. when switching the schema this would require changing it at multiple points....
    regards,
    hans

  • Multiple persistence units not supported by OEPE 12.1.1.0.1

    Dear Friends -
    Environment
    Oracle Enterprise Pack for Eclipse 12.1.1.0.1
    JPA version : 2.0
    Platform : Eclipse link 2.3.x
    OWLS Version : 12c (12.1.1)
    JDK : jrockit1.6
    Sybase database.
    While developing JPA projects, we are getting error and warning while using Multiple persistence units in persistence.xml.
    Steps :
    1. Create 2 persistence unit in persistence.xml.
    -- Warning saying that "Multiple persistence units defined - only the first persistence unit will be recognized"
    2. Create 2 database connection in OEPE.
    3. Create JPA Entities from Table using first database connection.
    -- No issues.
    4. Create another JPA Entities from Table using second database connection.
    -- Issue is entities created in step3.(is first JPA Entity classes)
    -- Errors from first JPA Entity classes.
    ----1. Table "table_name1" cannot be resolved.
    ----2. Table "table_name1" for column "column_name1" is not valid for this entity.
    5. Second JPA Entity classes are fine.
    Thanks
    Justin.
    Sample persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.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_2_0.xsd">
         <persistence-unit name="PU1" transaction-type="JTA">
              <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
              <jta-data-source>DS1</jta-data-source>
              <class>com.test.FirstEntity</class>     
         </persistence-unit>
         <persistence-unit name="PU2" transaction-type="JTA">
              <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
              <jta-data-source>DS2</jta-data-source>
              <class>com.test.SecondEntity</class>
         </persistence-unit>
    </persistence>

    Also, the reason you are seeing those errors in your first project after generating entities from the second connection is because the project wide schema is being updated to the second connections generation schema. If you go into the JPA project properties you can change it back. This workflow would need to change with multiple persistence unit support.
    Neil

  • Multiple persistence units with name "Model" are defined at the same scope

    Hi,
    I get this error when deploying from Jdeveloper 10.1.3.4 to OAS 10.1.3.
    The release notes for Jdev 10.1.3.1 say the following:
    "To avoid this error, update the ViewController project settings to remove the dependency on the Model project before deploying the ADF web application to Standlone OC4J."
    So I removed the dependancy but now none of my EJB's are deployed! If I go to the Enterprise Manager Console I can only see my WEB MODULE but no EJBs.
    Can anyone shed any light on this issue? Perhaps I have configured my incorrectly.
    ps. I am trying to deploy an EJB3 web app so I do not have any deployment descriptors as the documentation say that they are not needed.
    Thanks

    Also, the reason you are seeing those errors in your first project after generating entities from the second connection is because the project wide schema is being updated to the second connections generation schema. If you go into the JPA project properties you can change it back. This workflow would need to change with multiple persistence unit support.
    Neil

  • Weblogic 10.3.0 not picking up persistence unit

    Hello,
    I am facing a problem where Weblogic does not seem to pickup the persistence unit:
    [wldeploy] Target state: deploy failed on Server examplesServer
    [wldeploy] java.lang.IllegalArgumentException: No persistence unit named 'dao' is available in scope ejb-app. Available persistence units: []OS: Windows XP (Development Environemnt)
    WebLogic Server Version: 10.3.0.0
    Though I'm working via Eclipse Helios, I am using Weblogic generated (and later modified) Ant scripts to compile, build and deploy to my local Weblogic install, in a 'split development' setup.
    Following is the file strutcture:
    source
    +---build.xml (Ant script)
    +---APP-INF
    |    +---lib
    |         +--- * (shared libraries)
    |
    +---META-INF
    |    +---application.xml
    |    +---weblogic-application.xml
    |
    +---web-app
    |    +---WEB-INF
    |         +---src
    |         +---lib
    |
    +---ejb-app
         +---com.example.ejb.data (Contains Entity annotations)
          |    +---Pojo1.java
          |    +---Pojo2.java
          |
          +---com.example.ejb.ctrl (Contains business logic and services)
          |    +---MyService.java
          |
          +---META-INF
               +---ejb-jar.xml
                +---weblogic-ejb-jar.xml
                +---persistence.xml     Here is my persistence.xml:
    <?xml version="1.0"?>
    <persistence 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"
         version="1.0">
         <persistence-unit name="dao" transaction-type="RESOURCE_LOCAL">
              <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
              <jta-data-source>OraDS</jta-data-source>
              <non-jta-data-source>OraDS</non-jta-data-source>
              <class>com.example.ejb.data.Pojo1</class>
              <class>com.example.ejb.data.Pojo2</class>
              <properties>
                   <property name="eclipselink.target-server" value="WebLogic_10" />
                   <property name="eclipselink.logging.level" value="FINEST" />
              </properties>
         </persistence-unit>
    </persistence>            I am attempting to inject the persistence unit via annotation in MyService.java (a @Stateless session bean):
    @PersistenceContext(unitName = "dao")
    private EntityManager entityManager;     I had done the same with 10.3.0's default Kodo provider and was getting the same issue.
    I've moved the persistence.xml to source/APP-INF, source/APP-INF/lib, source/META-INF and run deploys, it still gives me the error.
    The whole EAR is built with wlcompile and appc as per Split Directory development flow.
    For some reason, Weblogic does not seem to pick up the "dao" persistence unit into its JNDI tree, application wide or 'ejb-app' module scoped.
    Any direction on what next should I be looking at would be helpful.
    Edited by: Vyoma on May 25, 2011 10:15 PM
    Fixed code formatting.

    Pierluigi Vernetto, thanks for that link. Though it was for a web module consumption of the persistence package, I was able to adapt it for use by my ejb module.
    Here is my solution, under split-directory development workflow.
    Create the persistence module, place the persistence.xml in that module's META-INF.
    Create an Ant task in the build.xml to 'wlcompile' and JAR it to the EAR direcotries APP-INF/lib directory.
    Exclude the persistence module from the rest of the 'wlcompile' and 'appc' tasks.
    I was then able to inject it with annotation in my EJB module.
    dvohra16, thanks for that pointer. Now that I've been able to solve, the pressure is off (and shifted to other things). But I will surely check your option out. If I can get that working, it will be much easier than tinkering around with the build.xml and would be the normal flow of split-directory development workflow.
    As of now, I will say this thread as 'solved', but if I get it working the way you mention (on my sandbox project), I will surely come back and update this thread.
    Edited by: Vyoma on May 27, 2011 11:21 AM

  • Warning: Supported source version 'RELEASE_6' from annotation processor 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' less than -source '1.7'

    warning: Supported source version 'RELEASE_6' from annotation processor 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' less than -source '1.7'
    Note: Creating static metadata factory ...
    An annotation processor threw an uncaught exception.
    Consult the following stack trace for details.
    java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/PersistenceException
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:2570)
        at java.lang.Class.getDeclaredField(Class.java:2055)
        at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.findDeclaredField(PrivilegedAccessHelper.java:67)
        at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getField(PrivilegedAccessHelper.java:223)
        at org.eclipse.persistence.internal.helper.Helper.getField(Helper.java:980)
        at org.eclipse.persistence.internal.descriptors.InstanceVariableAttributeAccessor.initializeAttributes(InstanceVariableAttributeAccessor.java:100)
        at org.eclipse.persistence.mappings.DatabaseMapping.preInitialize(DatabaseMapping.java:1455)
        at org.eclipse.persistence.mappings.foundation.AbstractDirectMapping.preInitialize(AbstractDirectMapping.java:913)
        at org.eclipse.persistence.oxm.mappings.XMLDirectMapping.preInitialize(XMLDirectMapping.java:439)
        at org.eclipse.persistence.oxm.XMLDescriptor.preInitialize(XMLDescriptor.java:559)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:649)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:632)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:568)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:799)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:756)
        at org.eclipse.persistence.oxm.XMLContext$XMLContextState.setupSession(XMLContext.java:738)
        at org.eclipse.persistence.oxm.XMLContext$XMLContextState.setupSession(XMLContext.java:1)
        at org.eclipse.persistence.internal.oxm.Context$ContextState.<init>(Context.java:86)
        at org.eclipse.persistence.oxm.XMLContext$XMLContextState.<init>(XMLContext.java:702)
        at org.eclipse.persistence.oxm.XMLContext.<init>(XMLContext.java:192)
        at org.eclipse.persistence.oxm.XMLContext.<init>(XMLContext.java:164)
        at org.eclipse.persistence.oxm.XMLContext.<init>(XMLContext.java:154)
        at org.eclipse.persistence.internal.jpa.modelgen.objects.PersistenceXMLMappings.createXMLContext(PersistenceXMLMappings.java:139)
        at org.eclipse.persistence.internal.jpa.modelgen.objects.PersistenceXMLMappings.createXML2_1Context(PersistenceXMLMappings.java:123)
        at org.eclipse.persistence.internal.jpa.modelgen.objects.PersistenceUnitReader.initPersistenceUnits(PersistenceUnitReader.java:178)
        at org.eclipse.persistence.internal.jpa.modelgen.objects.PersistenceUnitReader.<init>(PersistenceUnitReader.java:72)
        at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:376)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1173)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:859)
        at com.sun.tools.javac.main.Main.compile(Main.java:523)
        at com.sun.tools.javac.main.Main.compile(Main.java:381)..................
    I'm an undergraduate student in software engineering. I worked with EE and tried to built a EJB Application. It worked. But when i connected it to database using persistence it getting error as mentioned.
    When i change my source Binary Format to jdk6 it runs without errors. What can i do for this without downgrading jdk version?

    I resolved my problem. The issue was the version of EclipseLink that I had specified in my pom.xml. Version 2.0.1 has an issue with the meta-model generation and, in fact, I wanted to be using version 2.1.1. Once I changed to 2.1.1 everything compiled correctly.
    Just make certain that you include the correct EclipseLink repository.
    <repository>
    <id>EclipseLink Repo</id>
    <name>EclipseLink Repository for the JPA implementation</name>
    <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo</url>
    </repository>

  • Unit Test code using wrong persistence unit

    In the midst of learning Maven, I created a simple application in which I am using JPA (Java Persistence 1.0.2) with EclipseLink implementation (2.0.2).
    Note: This is an Application Managed environment. So I manually control EntityManager's life cycle.
    The persistence.xml file used by the main source code is different from the one that unit test code uses. Main code uses an Oracle DB and the test code uses an in-memory Derby.
    Running unit tests was updating the Oracle DB (!) and I eventually managed to fix that by using two different persistence-units in the XML files.
    However, I don't understand why that fixed the problem. I manually create and shut down the entity managers and they are not running concurrently. I'm pretty sure Maven (or the way I set it up) doesn't mess up the resources (XML files). In fact by looking at Maven's debug output I can see it's using the right XML file for unit tests.
    Could someone enlighten me, please?

    Do you have both persistence.xml files on your classpath? If so, and they contain the same name for their respective persistence units, you should be getting a warning or error since they must have unique names. There is no way to tell which one you want to access otherwise.
    Best Regards,
    Chris

Maybe you are looking for