Exception [TOPLINK-46] (OracleAS TopLink - 10g (9.0.4) (Build 031126))
Hi,
I am using TopLink for simple Department-Employee relation, i have my project xml configured, But i am facing the problem with following exception
Descriptor Exceptions:
Exception [TOPLINK-46] (OracleAS TopLink - 10g (9.0.4) (Build 031126)): oracle.toplink.exceptions.DescriptorException
Exception Description: There should be one non-read-only mapping defined for the primary key field [emp.empno].
Descriptor: Descriptor(com.oracle.mssql.emp.toplink.EmpTopLinkBean --> [DatabaseTable(emp)])
Runtime Exceptions:
What could be the reason?
Thanks
Madhu
My best guess would be that you have a 1:1 mapping from Employee to Department. This mapping represents part of the primary key.
Make sure that your 1:1 mapping is not configured as read-only. Another issue is that you may have set the relationship as target foreign key. This has the same effect as read-only and is not applicable in the 1:1 returning from a 1:M.
Doug
Similar Messages
-
Deploying Toplink to Oracle AS 10g 10.1.2
We are deploying our application developed in JDeveloper 10.1.3.3.0 and which includes TopLink, ADF Faces. What setups/libraries are specifically required to deploy to Oracle AS 10g 10.1.2
Thanks in advance
RaamWe are deploying our application developed in JDeveloper 10.1.3.3.0 and which includes TopLink, ADF Faces. What setups/libraries are specifically required to deploy to Oracle AS 10g 10.1.2
Thanks in advance
Raam -
Oracle.toplink.exceptions.QueryException
I get the following error when I attempt to create a table from my oject in the workbench:
Throwable Class Name:
oracle.toplink.exceptions.QueryException
Message:
when trying to generate a table from a class in the workbench i get the followin error:
Exception Description: The object [MWClassDescriptor[973268] (Address -> null)], of class [class oracle.toplink.workbench.model.desc.MWClassDescriptor], with identity hashcode (System.identityHashCode()) [9,908,840],
is not from this UnitOfWork object space, but the parent session's. The object was never registered in this UnitOfWork,
but read from the parent session and related to an object registered in the UnitOfWork. Ensure that you are correctly
registering your objects. If you are still having problems, you can use the UnitOfWork.validateObjectSpace() method to
help debug where the error occurred. For more information, see the manual or FAQ.
Stack trace:
Local Exception Stack:
Exception [TOPLINK-6004] (OracleAS TopLink - 10g (10.0.3) Developer Preview (Build 031022)): oracle.toplink.exceptions.QueryException
Exception Description: The object [MWClassDescriptor[973268] (Address -> null)], of class [class oracle.toplink.workbench.model.desc.MWClassDescriptor], with identity hashcode (System.identityHashCode()) [9,908,840],
is not from this UnitOfWork object space, but the parent session's. The object was never registered in this UnitOfWork,
but read from the parent session and related to an object registered in the UnitOfWork. Ensure that you are correctly
registering your objects. If you are still having problems, you can use the UnitOfWork.validateObjectSpace() method to
help debug where the error occurred. For more information, see the manual or FAQ.
at oracle.toplink.exceptions.QueryException.backupCloneIsOriginalFromParent(QueryException.java:158)
at oracle.toplink.publicinterface.UnitOfWork.getBackupClone(UnitOfWork.java:1539)
at oracle.toplink.publicinterface.UnitOfWork.calculateChanges(UnitOfWork.java:425)
at oracle.toplink.publicinterface.UnitOfWork.getChanges(UnitOfWork.java:1595)
at oracle.toplink.workbench.ui.WorkbenchSession.saveProject(WorkbenchSession.java:680)
at oracle.toplink.workbench.ui.MainView.saveProject(MainView.java:1914)
at oracle.toplink.workbench.ui.MainView.saveSelectedProjects(MainView.java:1983)
at oracle.toplink.workbench.ui.MainView.generateTableDefinitionsForClasses(MainView.java:728)
at oracle.toplink.workbench.ui.MainView.generateTableDefinitionsForSelected(MainView.java:753)
at oracle.toplink.workbench.ui.action.ActionManager$86.actionPerformed(ActionManager.java:2055)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)Hello,
Without more information, I can't determine what the problem is. This exception's english wording is "Object comparisons can only use the equal() or notEqual() operators. Other comparisons must be done through query keys or direct attribute level comparisons.", and implies that the query expression is using a Like operator where atleast one side of the comparison is an entity instead of a string value. Entity/object comparisons are only supported with the equal or notEqual comparisons.
Best Regards,
Chris -
Oracle.toplink.exceptions.ConcurrencyException
Hi,
We encountered a ConcurrencyException while running our batch process.
- The have our minNumReadPoolsize = 5
- The have our maxNumReadPoolsize = 20
- read Pool is exclusive
and we run our batch with 4 threads.
Here is the stack trace.
Any ideas?
Thanks
com.fmrco.gett.dataaccess.DAException: Exception while doing a commit
at com.fmrco.gett.dataaccess.toplink.ToplinkDATransaction.commit(ToplinkDATransaction.java:115)
at com.fmrco.compliance.cws.ipe.batch.IPETask.run(IPETask.java:159)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:642)
at java.lang.Thread.run(Unknown Source)
Caused by: Exception [TOPLINK-2003] (OracleAS TopLink - 10g (9.0.4.2) (Build 040311)): oracle.toplink.exceptions.ConcurrencyException
Exception Description: Wait failure on ClientSession.
Internal Exception: java.lang.InterruptedException
at oracle.toplink.exceptions.ConcurrencyException.waitFailureOnClientSession(ConcurrencyException.java:44)
at oracle.toplink.threetier.ConnectionPool.acquireConnection(ConnectionPool.java:72)
at oracle.toplink.threetier.ServerSession.acquireClientConnection(ServerSession.java:272)
at oracle.toplink.threetier.ClientSession.basicBeginTransaction(ClientSession.java:100)
at oracle.toplink.publicinterface.Session.beginTransaction(Session.java:448)
at oracle.toplink.publicinterface.UnitOfWork.beginTransaction(UnitOfWork.java:387)
at oracle.toplink.publicinterface.UnitOfWork.commitToDatabase(UnitOfWork.java:1066)
at oracle.toplink.publicinterface.UnitOfWork.commitToDatabaseWithChangeSet(UnitOfWork.java:1134)
at oracle.toplink.publicinterface.UnitOfWork.commitRootUnitOfWork(UnitOfWork.java:955)
at oracle.toplink.publicinterface.UnitOfWork.commit(UnitOfWork.java:770)
at com.fmrco.gett.dataaccess.toplink.ToplinkDATransaction.commit(ToplinkDATransaction.java:111)
... 3 more
Caused by: java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Unknown Source)
at oracle.toplink.threetier.ConnectionPool.acquireConnection(ConnectionPool.java:70)
... 12 more
20050512 05:22:19 EDT FATAL ipe.batch.IPETask [Thread-4] IPE Failed
com.fmrco.gett.dataaccess.DAException: Exception while doing a commit
at com.fmrco.gett.dataaccess.toplink.ToplinkDATransaction.commit(ToplinkDATransaction.java:115)
at com.fmrco.compliance.cws.ipe.batch.IPETask.run(IPETask.java:159)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:642)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:258)
at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:559)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1028)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2888)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:2960)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:724)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:778)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:639)
at oracle.toplink.publicinterface.UnitOfWork.executeCall(UnitOfWork.java:1397)
at oracle.toplink.internal.queryframework.CallQueryMechanism.executeCall(CallQueryMechanism.java:134)
at oracle.toplink.internal.queryframework.CallQueryMechanism.executeCall(CallQueryMechanism.java:115)
at oracle.toplink.internal.queryframework.CallQueryMechanism.executeNoSelectCall(CallQueryMechanism.java:167)
at oracle.toplink.internal.queryframework.CallQueryMechanism.updateObject(CallQueryMechanism.java:648)
at oracle.toplink.internal.queryframework.StatementQueryMechanism.updateObject(StatementQueryMechanism.java:425)
at oracle.toplink.internal.queryframework.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:1004)
at oracle.toplink.queryframework.WriteObjectQuery.executeCommitWithChangeSet(WriteObjectQuery.java:107)
at oracle.toplink.internal.queryframework.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:258)
at oracle.toplink.queryframework.WriteObjectQuery.execute(WriteObjectQuery.java:51)
at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:493)
at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:1958)
at oracle.toplink.publicinterface.UnitOfWork.internalExecuteQuery(UnitOfWork.java:2252)
at oracle.toplink.publicinterface.Session.executeQuery(Session.java:1086)
at oracle.toplink.publicinterface.Session.executeQuery(Session.java:1038)
at oracle.toplink.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:177)
at oracle.toplink.publicinterface.Session.writeAllObjectsWithChangeSet(Session.java:3223)
at oracle.toplink.publicinterface.UnitOfWork.commitToDatabase(UnitOfWork.java:1089)
at oracle.toplink.publicinterface.UnitOfWork.commitToDatabaseWithChangeSet(UnitOfWork.java:1134)
at oracle.toplink.publicinterface.UnitOfWork.commitRootUnitOfWork(UnitOfWork.java:955)
at oracle.toplink.publicinterface.UnitOfWork.commit(UnitOfWork.java:770)
at com.fmrco.gett.dataaccess.toplink.ToplinkDATransaction.commit(ToplinkDATransaction.java:111)The ConcurrencyException is occurring attempting to get a connection from the write-pool, not the read-pool. What size are you using for the write pool, ensure that it is large enough?
Could you include your entire session configuration or sessions.xml file.
Does the error only occur under heavy load, or does it start occurring after a certain point or after the null-pointer exception occurs?
The null-pointer exception occurring in the JDBC driver is also very odd; the driver should never be encountering a null-pointer. Are you using the correct JDBC driver version for your database version? -
Oracle.toplink errors, but no toplink installed? (10G, SRDemo)
Hello, I installed the Chapter 4 SRDemo on my machine, and I am receiving an error. (at bottom)
However, I am able to connect to the database without any problems, have been using the same database connection for over a month, but wanted to trying doing the EJBs and following the SRDemo tutorial.
This locks my account, so it is using the correct account name (Which is not the same as the default from the demo)
What is really confusing me is the references to TopLink everwhere. I do not have TopLink installed. When I try to debug when I step into the line where the error is thrown it tells me "Unable to find source file for package oracle.toplink.essentials.exceptions, filename TopLinkException.java.
Here is the error I receive on running the ServiceRequestFacadeClientEmbed.java in the SRDemo:
Mar 16, 2009 12:05:14 PM oracle.toplink.essentials.session.file:/C:/TEMP/oratemp/SRDEMO/Model/classes/-Model
INFO: TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
Mar 16, 2009 12:05:14 PM oracle.toplink.essentials.session.file:/C:/TEMP/oratemp/SRDEMO/Model/classes/-Model
INFO: Server: unknown
Mar 16, 2009 12:05:16 PM com.evermind.server.ejb.logging.EJBMessages logException
SEVERE: [ServiceRequestFacade:public org.srdemo.persistence.Products org.srdemo.business.ServiceRequestFacadeBean.findProductById(java.lang.Long)] exception occurred during method invocation: oracle.oc4j.rmi.OracleRemoteException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Error Code: 1017; nested exception is:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
....OK... so I started with a new try. (Same machine) Edit --- installed Oracle and JDev on a new machine, got the exact same results.
Downloaded JDeveloper 10G
Extracted to new directory.
New application - accepted all defaults.
New Business Tier->EJB->Entities from Tables
Substep - New Database Connection Accepted defaults, entered user name and password, entered hostname (not on localhost) and sid. Tested connection (Success!)
Selected only Address Table and accept all defaults.
project1.Addresses.java is created.
New Session Bean -> accepted all defaults
SessionEJBBean.java is created
New Sample Java Client -> accepted all defaults
SessionEJBClient.java is created
Ran SessionEJBBean.java
[Starting OC4J using the following ports: HTTP=8989, RMI=23891, JMS=9227.]
C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\config>
C:\Jdev10-2\jdk\bin\javaw.exe -client -classpath C:\Jdev10-2\j2ee\home\oc4j.jar;C:\Jdev10-2\jdev\lib\jdev-oc4j-embedded.jar -Xverify:none -XX:MaxPermSize=256m -DcheckForUpdates=adminClientOnly -Doracle.application.environment=development -Doracle.j2ee.dont.use.memory.archive=true -Doracle.j2ee.http.socket.timeout=500 -Doc4j.jms.usePersistenceLockFiles=false oracle.oc4j.loader.boot.BootStrap -config C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\config\server.xml
[waiting for the server to complete its initialization...]
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\dms.war...
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Unjar C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\dms.war in C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\dms
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Finished auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\dms.war
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\connectors\datasources\datasources.rar...
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Unjar C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\connectors\datasources\datasources.rar in C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\connectors\datasources\datasources
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Finished auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\connectors\datasources\datasources.rar
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags.ear...
Mar 17, 2009 10:54:42 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Unjar C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags.ear in C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags
Mar 17, 2009 10:54:43 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Finished auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags.ear
Mar 17, 2009 10:54:43 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags\webapp.war...
Mar 17, 2009 10:54:43 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Unjar C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags\webapp.war in C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags\webapp
Mar 17, 2009 10:54:46 AM oracle.oc4j.util.FileUtils autoUnpack
INFO: Finished auto-unpacking C:\Jdev10-2\jdev\system\oracle.j2ee.10.1.3.42.70\embedded-oc4j\applications\datatags\webapp.war
Mar 17, 2009 10:54:46 AM com.evermind.server.XMLApplicationServerConfig randomizeJtaAdminPassword
INFO: Updating JtaAdmin account
Ready message received from Oc4jNotifier.
Embedded OC4J startup time: 31654 ms.
09/03/17 10:54:51 Oracle Containers for J2EE 10g (10.1.3.4.0) initializedRun SessionEJBClient.java
Mar 17, 2009 10:55:30 AM oracle.j2ee.rmi.RMIMessages EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER
WARNING: Exception returned by remote server: {0}
javax.ejb.EJBException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Error Code: 1017; nested exception is:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Error Code: 1017; nested exception is: oracle.oc4j.rmi.OracleRemoteException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Error Code: 1017; nested exception is:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Error Code: 1017
oracle.oc4j.rmi.OracleRemoteException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
Error Code: 1017
at com.evermind.server.ejb.EJBUtils.getUserException(EJBUtils.java:346)
at com.evermind.server.ejb.interceptor.system.AbstractTxInterceptor.convertAndHandleMethodException(AbstractTxInterceptor.java:75)
at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
at SessionEJB_RemoteProxy_11o700f.queryAddressesFindAll(Unknown Source)
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:585)
at com.evermind.server.rmi.RmiMethodCall.run(RmiMethodCall.java:53)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)
Nested exception is:
.....So I would really appreciate any help, I have no good idea where to go next. I'm going to go try wiping a machine in the next cube and installing Oracle from scratch too.
Thanks,
Jeff
Edited by: jeffles on Mar 17, 2009 9:49 AM -
Oracle.toplink.essentials.exceptions.ValidationException
Hi,
In my EJB 3 application we added a Schema entity to our already existing Student entity.
I added the followning code in the student entity:
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(
nullable = true,
name = "SCHEMA_ID"
private Schema schema;
After adding the Schema enity I tried to compile and run the tests. I got the following toplink error message (roughly):
nternal Exception: Exception [TOPLINK-7250] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: [class se.myapp.subsytem.alpha.Student] uses a non-entity [class se.myapp.subsytem.domain.Schema] as target entity in the relationship attribute [private e.myapp.subsytem.domain.Schema].
I found out that I had to change the persistence.xml but not why?
I would be very happy if someone could shed some light in this matter since I have no clue why I must put it in the persistence.xml
cheers,
//mikeYou must either annotate every Entity with the @Entity annotation, or map it through the ORM.xml. All Entities must also define an @Id annotation.
-- James : http://www.eclipselink.org -
Exceptions while Opening a older toplink map in toplink 11g workbench
Hi
I have a toplink map used with toplink 10g. Now that after moving to toplink 11g I am unable to open the map using workbench. I am getting the following exception while opening.
Inputs to solve this probelm are welcomed.
oracle.toplink.workbench.framework.OpenException: Exception [TOPLINK-106] (Oracle TopLink - 11g (11.1.1.0.1) (Build 081030)): oracle.toplink.exceptions.DescriptorException
Exception Description: The method [legacySetDatabasePlatformNameForTopLink] on the object is throwing an exception.
Argument: [null]
Internal Exception: java.lang.reflect.InvocationTargetException
Target Invocation Exception: java.lang.IllegalArgumentException: missing database platform named: null
Mapping: oracle.toplink.mappings.DirectToFieldMapping[databasePlatformName-->platform-name]
Descriptor: XMLDescriptor(oracle.toplink.workbench.mappingsmodel.db.MWDatabase --> [DatabaseTable(database)])
at oracle.toplink.workbench.mappingsplugin.MappingsPlugin.open(MappingsPlugin.java:293)
at oracle.toplink.workbench.framework.internal.FrameworkApplication.open(FrameworkApplication.java:689)
at oracle.toplink.workbench.framework.internal.FrameworkNodeManager.openCallback(FrameworkNodeManager.java:341)
at oracle.toplink.workbench.framework.internal.RunnableProjectLoader.run2(RunnableProjectLoader.java:76)
at oracle.toplink.workbench.framework.internal.RunnableProjectLoader.run(RunnableProjectLoader.java:63)
at java.lang.Thread.run(Thread.java:595)
Caused by: Exception [TOPLINK-106] (Oracle TopLink - 11g (11.1.1.0.1) (Build 081030)): oracle.toplink.exceptions.DescriptorException
Exception Description: The method [legacySetDatabasePlatformNameForTopLink] on the object is throwing an exception.
Argument: [null]
Internal Exception: java.lang.reflect.InvocationTargetException
Target Invocation Exception: java.lang.IllegalArgumentException: missing database platform named: null
Mapping: oracle.toplink.mappings.DirectToFieldMapping[databasePlatformName-->platform-name]
Descriptor: XMLDescriptor(oracle.toplink.workbench.mappingsmodel.db.MWDatabase --> [DatabaseTable(database)])
at oracle.toplink.exceptions.DescriptorException.targetInvocationWhileSettingValueThruMethodAccessor(DescriptorException.java:1702)
at oracle.toplink.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:202)
at oracle.toplink.mappings.DatabaseMapping.setAttributeValueInObject(DatabaseMapping.java:1228)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1118)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:277)
at oracle.toplink.sdk.SDKAggregateObjectMapping.buildCompositeObject(SDKAggregateObjectMapping.java:58)
at oracle.toplink.mappings.foundation.AbstractCompositeObjectMapping.valueFromRow(AbstractCompositeObjectMapping.java:231)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1117)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:277)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:582)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:439)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:389)
at oracle.toplink.queryframework.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:511)
at oracle.toplink.queryframework.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:433)
at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:874)
at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:674)
at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:835)
at oracle.toplink.queryframework.ReadObjectQuery.execute(ReadObjectQuery.java:397)
at oracle.toplink.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2260)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1074)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1058)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1017)
at oracle.toplink.internal.sessions.AbstractSession.readObject(AbstractSession.java:2822)
at oracle.toplink.workbench.mappingsio.legacy.PersistenceTools50.readMWProjectNamed(PersistenceTools50.java:323)
at oracle.toplink.workbench.mappingsio.legacy.LegacyIOFacade.read50Project(LegacyIOFacade.java:21)
at oracle.toplink.workbench.mappingsio.ProjectReader.readLegacyProject(ProjectReader.java:248)
at oracle.toplink.workbench.mappingsio.ProjectReader.read(ProjectReader.java:104)
at oracle.toplink.workbench.mappingsio.ProjectIOManager.read(ProjectIOManager.java:59)
at oracle.toplink.workbench.mappingsplugin.MappingsPlugin.open(MappingsPlugin.java:289)
... 5 more
Caused by: java.lang.reflect.InvocationTargetException
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:585)
at oracle.toplink.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:174)
at oracle.toplink.mappings.DatabaseMapping.setAttributeValueInObject(DatabaseMapping.java:1228)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1118)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:277)
at oracle.toplink.sdk.SDKAggregateObjectMapping.buildCompositeObject(SDKAggregateObjectMapping.java:58)
at oracle.toplink.mappings.foundation.AbstractCompositeObjectMapping.valueFromRow(AbstractCompositeObjectMapping.java:231)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1117)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:277)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:582)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:439)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:389)
at oracle.toplink.queryframework.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:511)
at oracle.toplink.queryframework.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:433)
at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:874)
at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:674)
at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:835)
at oracle.toplink.queryframework.ReadObjectQuery.execute(ReadObjectQuery.java:397)
at oracle.toplink.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2260)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1074)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1058)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1017)
at oracle.toplink.internal.sessions.AbstractSession.readObject(AbstractSession.java:2822)
at oracle.toplink.workbench.mappingsio.legacy.PersistenceTools50.readMWProjectNamed(PersistenceTools50.java:323)
at oracle.toplink.workbench.mappingsio.legacy.LegacyIOFacade.read50Project(LegacyIOFacade.java:21)
at oracle.toplink.workbench.mappingsio.ProjectReader.readLegacyProject(ProjectReader.java:248)
at oracle.toplink.workbench.mappingsio.ProjectReader.read(ProjectReader.java:104)
at oracle.toplink.workbench.mappingsio.ProjectIOManager.read(ProjectIOManager.java:59)
Caused by: java.lang.IllegalArgumentException: missing database platform named: null
at oracle.toplink.workbench.platformsmodel.DatabasePlatformRepository.platformNamed(DatabasePlatformRepository.java:334)
at oracle.toplink.workbench.mappingsmodel.db.MWDatabase.setDatabasePlatformNameForTopLink(MWDatabase.java:1013)
at oracle.toplink.workbench.mappingsmodel.db.MWDatabase.legacySetDatabasePlatformNameForTopLink(MWDatabase.java:1133)
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:585)
at oracle.toplink.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:174)
at oracle.toplink.mappings.DatabaseMapping.setAttributeValueInObject(DatabaseMapping.java:1228)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1118)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:277)
at oracle.toplink.sdk.SDKAggregateObjectMapping.buildCompositeObject(SDKAggregateObjectMapping.java:58)
at oracle.toplink.mappings.foundation.AbstractCompositeObjectMapping.valueFromRow(AbstractCompositeObjectMapping.java:231)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1117)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:277)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:582)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:439)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:389)
at oracle.toplink.queryframework.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:511)
at oracle.toplink.queryframework.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:433)
at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:874)
at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:674)
at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:835)
at oracle.toplink.queryframework.ReadObjectQuery.execute(ReadObjectQuery.java:397)
at oracle.toplink.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2260)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1074)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1058)
at oracle.toplink.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1017)
at oracle.toplink.internal.sessions.AbstractSession.readObject(AbstractSession.java:2822)
at oracle.toplink.workbench.mappingsio.legacy.PersistenceTools50.readMWProjectNamed(PersistenceTools50.java:323)
at oracle.toplink.workbench.mappingsio.legacy.LegacyIOFacade.read50Project(LegacyIOFacade.java:21)
at oracle.toplink.workbench.mappingsio.ProjectReader.readLegacyProject(ProjectReader.java:248)
at oracle.toplink.workbench.mappingsio.ProjectReader.read(ProjectReader.java:104)
at oracle.toplink.workbench.mappingsio.ProjectIOManager.read(ProjectIOManager.java:59)
at oracle.toplink.workbench.mappingsplugin.MappingsPlugin.open(MappingsPlugin.java:289)
at oracle.toplink.workbench.framework.internal.FrameworkApplication.open(FrameworkApplication.java:689)
at oracle.toplink.workbench.framework.internal.FrameworkNodeManager.openCallback(FrameworkNodeManager.java:341)
at oracle.toplink.workbench.framework.internal.RunnableProjectLoader.run2(RunnableProjectLoader.java:76)
at oracle.toplink.workbench.framework.internal.RunnableProjectLoader.run(RunnableProjectLoader.java:63)
at java.lang.Thread.run(Thread.java:595)
SreeHi Sree,
If you could email me a copy of the whole mapping workbench project, I can probably fix this issue for you.
Thanks,
Les -
Hello everyone
I use Toplink 10g(9.0.4.5) with Oracle Lite database. I use the oracle.toplink.internal.databaseaccess.OraclePlatform and everything seems to be fine, except that when I pass a String more than the length defined in the Database, data is getting truncated to the maximum possible length in the Database and no exception is thrown. If I run a SQL statement directly on the Oracle Lite database using msql "value too large for column" exception is thrown.
The question is it the default behviour of oracle.toplink.internal.databaseaccess.OraclePlatform to truncate the data for the large Strings? How can i change this behaviour to throw an exception?
Any information on this would be highly appreciated.
Thanks in advance..Thanks for the reply.
But my tests are pointing towards ToplinkPlatform only. I use the oracle.lite.poljdbc.POLJDBCDriver with Oracle Database Lite, and when I do a simple test to insert a large String wiht plaing JDBC and POLJDBCDriver, i receive the following error.
[POL-2403] value too large for column
However if i did the same using Toplink and oracle.toplink.internal.databaseaccess.OraclePlatform, the SQL statement generated by Toplink does not throw any errors. When i query the database, i see that the data is truncated. I use the same oracle.lite.poljdbc.POLJDBCDriver with Toplink.
<session>
<name>testLite</name>
<project-class>com.entityobjects.mappings.testLite</project-class>
<session-type>
<server-session/>
</session-type>
<login>
<driver-class>oracle.lite.poljdbc.POLJDBCDriver</driver-class>
<connection-url>jdbc:polite:POLITE;DataDirectory=C:\;Database=testLite;</connection-url>
<platform-class>oracle.toplink.internal.databaseaccess.OraclePlatform</platform-class>
<user-name>test1</user-name>
<password>test1</password>
<should-bind-all-parameters>true</should-bind-all-parameters></login>
<enable-logging>true</enable-logging>
<logging-options/>
</session>
I do not want to add a check at the object setter level, as the same object model is used in different projects and published across.
Any more ideas why data is getting truncated?
Thanks in advance for any suggestions.. -
Oracle Toplink - OptimisticLockException
Hi
I have a timestamp field in my table which is a Timestamp locking field. I could insert a record succesully in to the table,but when I try to update the same record or try to delete the record, I am getting the following exception
[TOPLINK-5003] (OracleAS TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.OptimisticLockException
Exception Description: The object [] cannot be deleted because it has changed or been deleted since it was last read.
Could any one help me in, how can I update/delete a record succesfully? but at the same time, I need to have the Timestamp locking policy on this field.Is the field stored in the Object? Are you updating the field in the object? Are you using StoredProcedures? Is the Optimistic Lock Exception being thrown for a legitimate reason (ie. the row has been updated on the database since the object was read into a UnitOfWork)?
Perhaps more details on the lifecycle of the object in question (when is it read, how is it changed, are there any other applications changing the object) would help diagnose the issue.
--Gordon -
Check out TopLink integration with JDeveloper 10g
I just thought you might want to get a look at the upcoming integration of TopLink and Oracle JDeveloper 10g.
You can download the JDeveloper 10g preview now and play with it.
See demo: http://otn.oracle.com/products/jdev/viewlets/905p_adf_toplink/toplinkEditor_viewlet_swf.html
and follow the tutorial:
http://otn.oracle.com/products/jdev/collateral/prodtour10g.htmlJohn,
"1) When I did this last step, it created a new set of 'Offline Database Objects'. It would be nice not to have to redirect the new classes at my original objects or create a new diagram from the new objects. (I would like to bae able to get rid of one set of Database Objects.)"Currently, you are running into the issue since you already have offline tables that you are using to create online tables. You then are creating Java objects from online tables. Each time you create Java Objects from online tables, offline tables are created and cached with the project; the generator is not smart to recognize whether these tables exist offline.
That's a great suggestion and we already have this under consideration for future release. What you are asking is the ability to generate Java Objects from offline tables.
�2) The Database Objects that were created when I generated the classes all have the schema name prepended. My original Database Objects have the 'package' prepended. I would like my Java classes to map to unqualified tablenames.�Another great suggestion; we have already taken this into consideration for this release.
�Also, can I model sequences for my tables and have those automatically generated along with the tables and constraints? �You can always create a SEQUENCE table offline or online (on the database; see connections tab) in Jdeveloper and then use it in the TopLink mapping editor with your data model. Let me know if you need more info on it.
�Is there a place I can modify the default datatype to java type mappings? For example, what if I would prefer my classes to be generated with BigDecimal attributes instead of Double? �Yet another great suggestion, we will keep it in mind for future release. -
Oracle TopLink Essentials and CommunicationsException
Hi ,
I have server application , using MySql and Oracle TopLink Essentials - 2.0 working fine .
But in the next day am getting always error :
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureAfter searching get some info , that there is a default connection time for MySql (8h), and after that conection is closing.
I found some solution which should after 7h restart the connection, so it never will close :
<property name="idle-timeout-in-seconds" value="25200"/>I add it to the persistence.xml, unfortunately this is not working :(
Have any one the Idea how to solve this problem ?
This is Exception stack :
Local Exception Stack:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
Error Code: 0
Call: SELECT ID, EMAIL, PASSWORD, USERNAME, CREATIONDATE, DESCRIPTION FROM ADMIN WHERE (EMAIL = ?)
bind => [and]
Query: ReportQuery(***.*******.*****.models.Admin)
*** ****.*******.core.LgAdmin.login(LgAdmin.java:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:406)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1417)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:878)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:49)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:274)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:636)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThank you for any Help !!Hallo ForumKid2.
Ok, at first , I am really beginner with J2EE :(
Yes , I open connection as private attribute , with out closing it....
private final EntityManagerFactory emf = Persistence.createEntityManagerFactory("TestModel", new java.util.HashMap<String, String>());I had an Idea to do it with own factory (Singleton class) to open and close the connection .
I don't know how to do this via connection pool.. it mean to use some property in persistence.xml?
But it will not fix the connection error ...or ?
Anyone has Idea how to solve this problem ???
Thank you !
greetings
andrzej -
How to verify OC4J uses Oracle Toplink 10.x and not Toplink Essentials
Hi,
We dont want to use the default JPA provider "Toplink *Essentials*" that comes with OC4J. Rather we want to use Oracle Toplink 10.x
I downloaded [Oracle Toplink 10.x|http://www.oracle.com/technology/software/products/ias/htdocs/1013topsoft.html] and followed the installation instructions:- http://www.oracle.com/technology/products/ias/toplink/doc/10131/install/install.html#CHDBBIFB
When i deploy my EJB 3.0 appliation and invoke a JPA Entity, i can see the server log:- NOTIFICATION TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
Do i have to do any other configuration/setting to ensure that i use Oracle Toplink and not Toplink Essentials in OC4J?
Thanks in Advance,
Prashant Tejura
Edited by: user1186295 on May 26, 2009 10:33 AMrashant,
Hi, there are currently the following providers to choose from - you may want to consult your rep for any details on moving from 10.1.3.4 to 10.1.3.5.
1) TopLink or EclipseLink using EclipseLink JPA - the RI for JPA for WebLogic, OC4J and GlassFish
- EclipseLink JPA is focus of all current JPA development as part of EclipseLink and TopLink
2) Another open-source JPA implementation like OpenJPA or Hibernate
Deprecated:
3) TopLink using TopLink JPA - replaced by (1) TopLink using EclipseLink JPA
4) TopLink using TopLink Essentials JPA - replaced by (1) TopLink using EclipseLink JPA
Changes to server.xml as follows:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/OC4J_Web_Tutorial#Modify_server.xml
<shared-library name="oracle.persistence" version="1.0" library-compatible="true">
<code-source path="../../../eclipselink/eclipselink.jar"/>
<code-source path="../../../eclipselink/javax.persistence_*.jar"/>
<import-shared-library name="oracle.jdbc"/>
</shared-library>
Changes to persistence.xml as follows: (container-managed JTA datasource)
http://wiki.eclipse.org/EclipseLink/Examples/JPA/OC4J_Web_Tutorial#Persistence.xml
<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="example" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/OracleDS</jta-data-source>
<class>org.eclipse.persistence.example.jpa.server.business.Cell</class>
<properties>
<property name="eclipselink.target-server" value="OC4J"/>
<property name="eclipselink.logging.level" value="FINEST"/>
</properties>
</persistence-unit>
</persistence>
You should see output similar to the following in your server log:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/OC4J_Web_Tutorial#Console_Output
[EL Finest]: 2009-02-26 14:04:34.464--ServerSession(8634980)--Thread(Thread[HTTPThreadGroup-4,5,HTTPThreadGroup])--Begin deploying Persistence Unit example; state Predeployed; factoryCount 1
[EL Info]: 2009-02-26 14:04:34.542--ServerSession(8634980)--Thread(Thread[HTTPThreadGroup-4,5,HTTPThreadGroup])--EclipseLink, version: Eclipse Persistence Services - ***
[EL Fine]: 2009-02-26 14:04:35.213--Thread(Thread[HTTPThreadGroup-4,5,HTTPThreadGroup])--Detected Vendor platform: org.eclipse.persistence.platform.database.oracle.Oracle10Platform
[EL Config]: 2009-02-26 14:04:35.26--ServerSession(8634980)--Connection(5230779)--Thread(Thread[HTTPThreadGroup-4,5,HTTPThreadGroup])--Connected: jdbc:oracle:thin:@//1y.yyy.yy.yy:1521/ORCL
User: SCOTT
Database: Oracle Version: Oracle Database 11g Release 11.1.0.0.0 - Production
Driver: Oracle JDBC driver Version: 10.1.0.5.0
[EL Finest]: 2009-02-26 14:04:35.385--UnitOfWork(5746770)--Thread(Thread[HTTPThreadGroup-4,5,HTTPThreadGroup])--PERSIST operation called on: org.eclipse.persistence.example.jpa.server.business.Cell@9107088( id: null state: null left: null right: null parent: null references: null).
[EL Fine]: 2009-02-26 14:04:35.807--ClientSession(5748500)--Connection(6653899)--Thread(Thread[HTTPThreadGroup-4,5,HTTPThreadGroup])--INSERT INTO EL_CELL (ID, STATE, TSEQ, RIGHT_ID) VALUES (?, ?, ?, ?)
bind => [551, null, null, null]
thank you
/michael
www.eclipselink.org -
TopLink on WebLogic or oracle.toplink.PersistenceProvider
Hy.
I have applied patch 5KXF to add toplink 11g on WebLogic 10.3.
Now, in BEA_HOME\patch_wls1030\patch_jars\ there is toplink.jar.
But how can I use it?
Inside toplink.jar there is file META-INF\services\META-INF\services\javax.persistence.spi.PersistenceProvider.
I assume that content of this file is the name of the implementation class.
It is "oracle.toplink.PersistenceProvider".
But when I put this name in persistence.xml and try to deploy my EAR, this message appears
=====================================================================================================
weblogic.deployment.EnvironmentException: Error processing persitence unit toplink of module toplink.jar: Error instantiating the Persistenc
e Provider class oracle.toplink.essentials.PersistenceProvider of the PersistenceUnit toplink: java.lang.ClassNotFoundException: oracle.topl
ink.essentials.PersistenceProvider
at weblogic.deployment.PersistenceUnitInfoImpl.createEntityManagerFactory(PersistenceUnitInfoImpl.java:322)
at weblogic.deployment.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:123)
at weblogic.deployment.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:331)
at weblogic.deployment.AbstractPersistenceUnitRegistry.loadPersistenceDescriptor(AbstractPersistenceUnitRegistry.java:245)
at weblogic.deployment.ModulePersistenceUnitRegistry.<init>(ModulePersistenceUnitRegistry.java:63)
=====================================================================================================
The persistence.xml file looks like
=====================================================================================================
<persistence-unit name="toplink">
<provider>
oracle.toplink.essentials.PersistenceProvider
</provider>
<jta-data-source>jdbc/miroslav_rehirDS</jta-data-source>
</persistence-unit>
=====================================================================================================
One thing more .... In the filesistem I can't find class oracle.toplink.PersistenceProvider.
On the other hand it is OK to put
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
Thanks four your replies,
MiroslavMiroslav,
You may be interested in the latest release of Oracle WebLogic Server.
See the recent OTN post from 20110115 detailing the latest release of Oracle WebLogic Server and some retesting of the previous issues related to JSR-317 JPA 2.0 support below.
11g Release 1 Patch Set 3 (WLS 10.3.4)
The latest release of Oracle WebLogic Server has been available on OTN at the following location since 20110115.
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html
This release provides support for JSR-317 JPA 2.0 container managed applications using the QWG8 patch or a manual prepending classpath change.
In 10.3.3.0 you were required to use the FilteringClassLoader via the *<wls:prefer-application-packages>* addition to your application managed persistence unit - this workaround as well as the persistence.xml renaming one is now fully deprecated and not required in 10.3.4.0 for both application and container managed persistence contexts.
As of 20110115 the 5 outstanding issues below look to be fixed by applying the http://download.oracle.com/docs/cd/E17904_01/web.1111/e13720/using_toplink.htm#EJBAD1309 patch for QWG8 or manually prepending to the WebLogic 10.3.4.0 server classpath.
commEnv.cmd: line 67
@rem Set BEA Home
set BEA_HOME=C:\opt\wls1034r20110115
@rem Enable JPA 2.0 functionality on WebLogic Server 10.3.4 with the following patch line for commEnv.cmd:67
set PRE_CLASSPATH=%BEA_HOME%\modules\javax.persistence_1.0.0.0_2-0-0.jar;%BEA_HOME%\modules\com.oracle.jpa2support_1.0.0.0_2-0.jar
A JPA 2.0 EE application using EclipseLink as the JPA2 persistence provider on WebLogic is detailed in the analysis section below1) JPA 2.0 XSD parsing - verified
2) New JPA 2.0 schema elements like <shared-cache-mode>NONE</shared-cache-mode> - verified
3) JPA 2.0 runtime API like a entityManager.getMetamodel(); call on the Servlet or Stateless session bean - verified
4) JPA 2.0 weaving/instrumentation - this will require a more detailed lazy model and more debugging to fully verify
5) Dependency Injection of a container managed JPA 2.0 entityManager on a EJB component like a stateless session bean - verified
http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/weblogic#Enabling_JPA2_support
OTN downloadhttp://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html
Patching
http://download.oracle.com/docs/cd/E18476_01/doc.220/e18480/weblogicchap.htm
Documentationhttp://download.oracle.com/docs/cd/E17904_01/web.1111/e13852/toc.htm
Supported Oracle WebLogic Server Versionshttp://download.oracle.com/docs/cd/E15315_06/help/oracle.eclipse.tools.weblogic.doc/html/SupportedServerVersions.html
TopLink JPA 2.0 Specific documentation/patchinghttp://download.oracle.com/docs/cd/E17904_01/web.1111/e13720/using_toplink.htm#EJBAD1309
EclipseLink Wiki: JPA 2.0 using EclipseLink on WebLogic analysis (XSD, Weaving, DI of @PersistenceContext)http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/weblogic#Enabling_JPA2_support
thank you
/Michael O'Brien
http://www.eclipselink.org -
Details on TAF support in Oracle AS 10g
Hi experts,
I'm currently writing a Master's Thesis on High Availability of Applications based on Suns JEE platform.
With Oracle being one of the big players in this market I'm going to investigate the features of the Oracle product stack and compare it with other solutions including opensource.
At the moment I'm looking for details on TAF-support in Oracle AS 10g. Lets assume one has installed the latest release of the Oracle 10g database in a RAC configuration on two or more physical nodes to store the applications data. Lets further assume one has set up the latest release of the Oracle AS 10g on different hosts building an AS farm with clustered OC4J-instances. Now one would like to connect a JEE application running within these OC4J-instances to the RAC database.
Therefore one can configure an OC4J datasource to use a service definition supporting network failover and transparent application failover (TAF) specified in the tnsnames.ora on the AS hosts or directly describe the service in the data-sources.xml. To my knowledge only datasources configured to use the OCI client can be used with TAF. Everything right so far?
Now the interesting part. The best what TAF can do is automatically reconnect to the next known database node if its current node is not reachable or fails, and continue processing an open cursor for select so that the application can continue to use its current connection.
If the application is running a database transaction it can only be rolled back and rerun after failover.
In a good old plain Java application one had to implement the OracleOCIFailover interface and register a callback with the db connection in order to receive failover events. Therefore you need to process the query in a different thread.
In a JEE server only the container should be responsible for creating threads, or? How does the Oracle AS support TAF? How can a user application get notice of a failover and react appropriately. Is the behaviour always the same no matter one decides to implement the data access via simple DAOs or entity beans (CMP/BMP)? I assume it is safe to use a connection pool and container will take care of the necessary cleanup jobs, right? Will the complete connection pool be reconstructed or only connections to the failed node?
Does the application server internally use these OCI callbacks and wrap them up into special Exceptions? Is there anything an application programmer has to do in order to make his data access code ready for TAF, especially in case of failover while the db is processing transactional code?
Any insights and/or code snippets would be greatly appreciated!
Ah, one last question. From a HA perspective is it generally a bad idea to put application logic into the database (use CDM RuleFrame and so on) as there is no support in preserving package states or do you think this makes no difference as one has always to repeat everything since the last commit point no matter in which tier the code resides?
During the next days Im going to set up the above environment for testing. A 10.0.2.1 RAC on RHE4 is already up and running fine. AS 10.1.3.0.0 on RHE4 is following today or tomorrow.
Many thanks for all answers!
Regards,
EricHi,
well, I thought I could dig into the OC4J documentation before installing the server. After reading the OC4J Service Guide for 10.1.2 and 10.1.3 I'm a little bit confused.
First I read the 10.1.2 Service Guide and almost everything seemed to be clear. I found a lot of answers to the questions above. I'd like to sum them up. Please correct me if I got something wrong!
- TAF only works on top of OCI driver
- TAF can be used with connection pooling
- OC4J takes care of connection pool cleanup (OC4J and OCI Pool)
These two pools are mentioned. It's not clear to me how they work together. Do one of you know some source where I can get more information about this?
- after a failover all connections in the pool are checked by OC4J and only alive ones will survive
- in case of a failover TAF issues an exception
- the application has to catch this exception and acknowledge with a rollback, after that the transaction can be restarted (this seems to be the responsibility of the applications code, oc4j will not replay something automatically; If I got it right, CMP entity beans will be an exception to this rule - there OC4J will proceed transparently...)
- the application can use OCI callbacks to customize the failover behavior (well I would like to see some source code example here, as I can't imagine how this could look like)
After that I read the 10.1.3 service guide. The section about datasources in conjunction with HA is much shorter. Besides TAF new? mechanism is introduced, namely Fast Connection Failover (FCF). There is not much information about it but references to the JDBC Guide, because FCF is a feature of the implicit JDBC connection cache. Where cache seems to be just another word for pool.
By the way, the example on p. 4-36 looks wrong at first glance. Enabling FCF and setting:
<property name="fastConnectionFailoverEnabled" value="false"/> ???
Seems to be a typo in the docu, or?
I got the impression, that the text is written as if FCF being TAF's successor, without explicitly saying this. Is this right?
So I proceeded reading the JDBC Developer Guide to lean more about FCF. Here is what I learned:
- since 10g available
- FCF is driver independend (you can also use the thin driver)
- prerequisites are implicit connection cache (pool) enabled, ONS must be configured
- in case of a failover the transcation will be rolled back automatically (not by the application); whereas using TAF you have to use a rollback to acknowledge the error
- only one exception ORA-17008 to catch
- application has to obtain a new connection from the cache (pool), where as using TAF the old connection object can be used, and resend the transaction (same as with TAF)
So when to use what? The comparison on p. 27-8 was not very helpful to find an answer to this question.
On p. 28-1 one can read that TAF does not work with the OCI Connection Pool. That's seems to be contradictory to the statement in Service Guide of 10.1.2 that OC4J takes care of both pools (OC4J and OCI). Or has something changed in 10.1.3 in that regard? May be this is because of the changes in Cache or Pool Management?
What is the advantage of using TAF within OC4J in 10g, if there is any?
What about select statements with FCF? You can only read about transactions. I'd assume the application would get the same exception executing a query (ORA-17008) as executing a transaction, right? So TAF should have the advantage of transparently proceeding selects after a failover. Am I right?
I'd love to see more examples and comparisons of TAF and FCF.
Regards,
Eric -
Connecting form 6i to oracle database 10G express edition
I am unable to connect forms 6i to oracle database 10G express edition.
form builder closes without any message.Hi, i was try that solution, but have some problem.
1) I have stopped other database (Oracle 8i, OracleService + Listener), none Oracle service was running.
2) I was install Oracle XE Univ.
3) Run sqlplus from XE
"D:\oraclexe\app\oracle\product\10.2.0\server\BIN>sqlplus system/PASSWORD@xe as sysdba"
4) Shutdown immediate - OK
5) Startup mount - failed
SQL> startup mount
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
6) I was check registry "hkey_local_machine\software\oracle" and delete key "local" (walue was set to connection to 8i database).
7) I was checking status of Listener from XE (after shutdown).
"Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jacek)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully"
Have anyone suggestion how to connect "directly" to XE (without @CONNECTION string) ?
If source of problem can be having DB 8i installed on same machine ?
BBye.
Maybe you are looking for
-
Iphone nao avisa recebimento de nova mensagem
meu iphone nao avisa recebimento de mensagem
-
I have had my iPhone 4 for a year and have only plugged it into my friends computer when I first got it, and now I just purchase my music right on my phone, so now I'm getting a new phone and want to back up my music, photos, etc so if I plug this ph
-
How do I stop the sound from a video or email when I want I click out of the video. Presently, the sound continues and I have to escape out to home screen to stop it.
-
I was wondering if a separate account can be sep-up in your itunes account as I have reached my limit on downloading ipads and would like to sep-up a new account so my grandchildren can play with their ipad
-
XPath text() node comparison
I have an XML document that looks something like: <A> <B>One </B> <B>Two </B> <B>Three </B> </A> I am using XPathAPI to evaluate my XPath Expressions and I would like to write an expression that will select a node of type B based on the value of its