JDO (vs.) JDBC
Hi guys,
a simple question: are there big performance differences by using JDO instead of JDBC?
I know most people don't want answer this kinde of questions :)
but before i start with implementing some solutions i will try to choose this technology that is better to me (performance and manageablity).
I'am not familiar with JDBC as much as to JDO.
So if you want advise to me, to make the performance-tests by my self, so I gonna to know:
- Is JDO applicable to an Oracle 8.1.7 database?
- what kinde of tests I have to achieve, to be able to make some decisions?
- where to finde a JDO-Tutorial?
I just spotted this and wanted to give an answer in case you never found the answers elsewhere.
a simple question: are there big performance
differences by using JDO instead of JDBC?
I know most people don't want answer this kinde of
questions :)This is a difficult question to answer because it is an apples to oranges question. With JDO, performance is really a factor of the quality of the implementation. With JDBC, performance is factor of the quality of the JDBC coder and the amount of time spent coding the JDBC.
That said, our implementation of the JDO standard, Kodo JDO, in about 90% of the cases matches the performance of an existing JDBC solution or beats it. In the remaining 10%, Kodo is approximately 0-15% less performant.
but before i start with implementing some solutions i
will try to choose this technology that is better to
me (performance and manageablity).
I'am not familiar with JDBC as much as to JDO.
So if you want advise to me, to make the
performance-tests by my self, so I gonna to know:
- Is JDO applicable to an Oracle 8.1.7 database?Depends on the implementation, but I believe almost all of the implementations support Oracle.
- what kinde of tests I have to achieve, to be able to
make some decisions?The best suggestion that I can provide is try it out. Most of customers tell us that Kodo JDO pays for itself in 1-3 months.
- where to finde a JDO-Tutorial?There are now 4 JDO books available where you can find great materials. All of the JDO vendors also offer a variety of tutorials.
Hope that helps and I wish I had seen this posting earlier.
Neelan Choksi
www.solarmetric.com
Similar Messages
-
JDO or JDBC that is the question?
I've noticed that there is alot more postings regaurding JDBC rather than JDO.
Is this the correct fourm for questions reguarding JDO or is JDBC people's prefferd choice?
Ideally i would prefer to use JDO. But if there is little support, then im going to have to resort to JDBC.The relational model has a lot going for it that the
object model does not:
(1) A mathematical basis (set theory),Give me the intersection of these two collections of objects.
(2) A ubiquitous, standard language (SQL),EJBQL
(3) A huge installed base,Agreed.
(4) Familiar to a large user and client community,Depends on who you talk to. Thinking of data as Collections of Entity beans is a natural fit to me, and I have no qualms about abstracting away the data layer to fit this model. I've had much success using CMP Entities.
(5) Large institutions have critical data tied up in
them (e.g., banks)Agreed. However, J2EE 1.4 spec. allows you to map relationships and object instances to database tables, so you can add the Object representation later.
(6) No compelling reason to switch.Agreed. Adding the Object representation would take considerable work. If the developers working with the data are happy to stay with plain old DAOs and write SQL themselves, then there's definitely no reason to switch. As J2EE technology matures, however, the benefits of having the Object representation available will become clearer. IMHO, teaching OO developers to treat their data as objects as well can only lead to Good Things(tm).
Brian -
Error while calling a Webservice from a custom findBy operation
Hello
I have created an External Service by importing a WebService(XI) which is a wrapper for BAPI BAPI_VENDOR_GETDETAIL. Tested the webservice and it works fine.
I created an Entity Service Vendor and created 4 attributes vendorNo and companyCode, vendorName and city. I created an operation findByVendorNo then did the mapping with the webservice output.
Now when I execute, I get the following error. Tried debugging but there is no source code for the class in which this error is coming from.
Any help is appreciated.
Regards,
Shubham
com.sap.caf.rt.exception.CAFFindException: Error in mapping model of class com.sap.test.items.besrv.vendor.VendorJDO: Cannot find table for mapping class com.sap.test.items.besrv.vendor.VendorJDO
at com.sap.test.items.besrv.vendor.VendorServiceBean.findByMultipleParameters(VendorServiceBean.java:367)
at com.sap.test.items.besrv.vendor.VendorServiceBean.findByVendor(VendorServiceBean.java:300)
at com.sap.test.items.besrv.vendor.VendorServiceLocalLocalObjectImpl0.findByVendor(VendorServiceLocalLocalObjectImpl0.java:770)
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:324)
at com.sap.caf.rt.services.serviceaccess.ServiceWrapper.findByDataObject(ServiceWrapper.java:269)
at com.sap.caf.rt.services.serviceaccess.CAFServiceAccessBeanImpl.findByDataObject(CAFServiceAccessBeanImpl.java:223)
at com.sap.caf.rt.services.serviceaccess.CAFServiceAccessLocalLocalObjectImpl20.findByDataObject(CAFServiceAccessLocalLocalObjectImpl20.java:875)
at com.sap.caf.rt.ui.cool.generic.AspectServiceAccess.findBy(AspectServiceAccess.java:275)
at com.sap.caf.rt.ui.cool.generic.Query.execute(Query.java:217)
at com.sap.caf.ui.servicebrowser.components.visualizer.controllers.TableViewCC.execute(TableViewCC.java:323)
at com.sap.caf.ui.servicebrowser.components.visualizer.controllers.wdp.InternalTableViewCC.execute(InternalTableViewCC.java:196)
at com.sap.caf.ui.servicebrowser.components.visualizer.views.TableViewCV.onActionExcuteQuery(TableViewCV.java:353)
at com.sap.caf.ui.servicebrowser.components.visualizer.views.wdp.InternalTableViewCV.wdInvokeEventHandler(InternalTableViewCV.java:351)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)
at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Caused by: com.sap.caf.rt.exception.DataAccessException: Error in mapping model of class com.sap.test.items.besrv.vendor.VendorJDO: Cannot find table for mapping class com.sap.test.items.besrv.vendor.VendorJDO
at com.sap.caf.rt.bol.da.remote.RemoteDataAccessService.queryWithoutEntityRefs(RemoteDataAccessService.java:929)
at com.sap.caf.rt.bol.da.remote.RemoteDataAccessService.query(RemoteDataAccessService.java:746)
at com.sap.test.items.besrv.vendor.VendorServiceBean.findByMultipleParameters(VendorServiceBean.java:339)
... 44 more
Caused by: com.sap.caf.rt.exception.DataAccessException: Error in mapping model of class com.sap.test.items.besrv.vendor.VendorJDO: Cannot find table for mapping class com.sap.test.items.besrv.vendor.VendorJDO
at com.sap.caf.rt.bol.da.jdo.JDODADataAccessService.query(JDODADataAccessService.java:732)
at com.sap.caf.rt.bol.da.remote.RemoteDataAccessService.findJDOObject(RemoteDataAccessService.java:1094)
at com.sap.caf.rt.bol.da.remote.RemoteDataAccessService.processQueryResult(RemoteDataAccessService.java:961)
at com.sap.caf.rt.bol.da.remote.RemoteDataAccessService.processQueryResults(RemoteDataAccessService.java:952)
at com.sap.caf.rt.bol.da.remote.RemoteDataAccessService.queryWithoutEntityRefs(RemoteDataAccessService.java:916)
... 46 more
Caused by: javax.jdo.JDOFatalUserException: Error in mapping model of class com.sap.test.items.besrv.vendor.VendorJDO: Cannot find table for mapping class com.sap.test.items.besrv.vendor.VendorJDO
at com.sap.jdo.sql.mapping.impl.MappingModelChecker.checkDBModel(MappingModelChecker.java:323)
at com.sap.jdo.sql.mapping.impl.MappingModelChecker.visitMappingClassPre(MappingModelChecker.java:78)
at com.sap.jdo.sql.mapping.impl.MappingClassImpl.accept(MappingClassImpl.java:819)
at com.sap.jdo.sql.mapping.impl.MappingModelChecker.checkMappingClass(MappingModelChecker.java:53)
at com.sap.jdo.sql.mapping.impl.MappingClassImpl.checkConsistency(MappingClassImpl.java:278)
at com.sap.jdo.sql.mapping.impl.MappingClassImpl.checkXMLRequired(MappingClassImpl.java:294)
at com.sap.jdo.sql.mapping.impl.MappingClassImpl.getField(MappingClassImpl.java:363)
at com.sap.jdo.sql.jdbc.QueryBlock$ClassWithScopeImpl.accessField(QueryBlock.java:304)
at com.sap.jdo.sql.jdbc.SQLQueryTreeWalker$SQLQueryTreeVisitor.leave(SQLQueryTreeWalker.java:568)
at com.sap.jdo.common.query.tree.FieldAccessExpr.leave(FieldAccessExpr.java:151)
at com.sap.jdo.query.TreeWalker.walk(TreeWalker.java:61)
at com.sap.jdo.query.TreeWalker.walk(TreeWalker.java:58)
at com.sap.jdo.sql.jdbc.SQLQueryTreeWalker.<init>(SQLQueryTreeWalker.java:206)
at com.sap.jdo.sql.jdbc.SQLQueryTreeWalker.<init>(SQLQueryTreeWalker.java:168)
at com.sap.jdo.sql.jdbc.request.factory.JDBCRequestFactory.getQueryRequestImpl(JDBCRequestFactory.java:1087)
at com.sap.jdo.sql.jdbc.request.factory.JDBCRequestCloneCache.getQueryRequest(JDBCRequestCloneCache.java:339)
at com.sap.jdo.sql.jdbc.request.factory.JDBCRequestCache.getQueryRequest(JDBCRequestCache.java:476)
at com.sap.jdo.sql.jdbc.JDBCStoreManager.newQueryResult(JDBCStoreManager.java:667)
at com.sap.jdo.StoreManagerAdapter.newQueryResult(StoreManagerAdapter.java:453)
at com.sap.jdo.common.query.QueryImpl.executeWithMap(QueryImpl.java:572)
at com.sap.caf.rt.bol.da.jdo.JDODADataAccessService.query(JDODADataAccessService.java:683)
... 50 moreHi,
did you registered the web service in the external service registration? The "DataAccessException:" is a hint to this issue.
best regards,
Rene -
RC1 and MetaDataMappingFactory
I'm trying to migrate from 2.5.3 to 3.0RC1.
To use only the old 2.5.3 package.jdo file including mapping information
instead of additionally my newly generated .mapping file, I've set
'metadata' as MappingFactory.
Compiling my queries, I get
kodo.jdbc.meta.MappingInfoNotFoundException: No mapping information was
found for "class thisIsMyClass".
at
kodo.jdbc.meta.RuntimeMappingProvider.getMapping(RuntimeMappingProvider.java:43)
at
kodo.jdbc.meta.MappingRepository.getMappingInternal(MappingRepository.java:342)
at kodo.jdbc.meta.MappingRepository.getMapping(MappingRepository.java:297)
at
kodo.jdbc.meta.MappingRepository.getMappings(MappingRepository.java:272)
at
kodo.jdbc.meta.MappingRepository.getMetaDatas(MappingRepository.java:256)
at kodo.query.QueryImpl.internalCompile(QueryImpl.java:559)
at kodo.query.QueryImpl.compile(QueryImpl.java:523)
If I add a .mapping file with the default FileMappingFactory everything
works fine. The new mapping file was generated with kodo2migrator.
Did I misunderstand the documentation or is this an RC1-error?Did you use the mappingtool to import the .mapping file created with
kodo2migrator into .jdo metadata extensions?I've mapped the mapping information back to the .jdo-files, removed the
mapping files and tried to start again with "kodo.jdbc.MappingFactory:
metadata". Unfortunately it did not work.
I'm using Oracle 9.2.0.1.0.
The only properties set next to metadata are:
javax.jdo.option.NontransactionalRead=true
javax.jdo.option.RetainValues=true
javax.jdo.option.Optimistic=true
javax.jdo.PersistenceManagerFactoryClass=kodo.jdbc.runtime.JDBCPersistenceManagerFactory
If I add the property
kodo.jdbc.SchemaFactory=dynamic
to prevent schema synchronization everything next to a bug I'll report
later works fine. I can read + (partially) write to the database.
Here's the stack trace, the .jdo-files come below:
kodo.MetaData :INFO: Parsing metadata resource
"jar:file:/myjar.jar!/firstpackage/package.jdo".
kodo.MetaData :INFO: Parsing metadata resource
"jar:file:/myjar.jar!/secondpackage/package.jdo".
kodo.jdbc.Schema :INFO: Generating tables for schema name "null", table
name "APPLICATION".
kodo.jdbc.Schema :INFO: Generating column information for table
"GAMBLE.APPLICATION".
kodo.jdbc.Schema :INFO: Generating tables for schema name "null", table
name "ZSYS_INTERCEPTOR".
kodo.jdbc.Schema :INFO: Generating column information for table
"GAMBLE.ZSYS_INTERCEPTOR".
kodo.jdbc.meta.MappingInfoNotFoundException: The mapping for field
"secondpackage.InterceptorDefImpl.application" is missing information on
how to link the field to the related class table, or the given information
is invalid.
at kodo.jdbc.meta.Mappings.invalidMapping(Mappings.java:89)
at kodo.jdbc.meta.Mappings.invalidMapping(Mappings.java:75)
at
kodo.jdbc.meta.OneToOneFieldMapping.fromMappingInfo(OneToOneFieldMapping.java:98)
at
kodo.jdbc.meta.RuntimeMappingProvider.getFieldMapping(RuntimeMappingProvider.java:156)
at
kodo.jdbc.meta.MappingRepository.getFieldMapping(MappingRepository.java:410)
at kodo.jdbc.meta.ClassMapping.getFieldMapping(ClassMapping.java:1048)
at kodo.jdbc.meta.ClassMapping.getMappings(ClassMapping.java:1018)
at
kodo.jdbc.meta.ClassMapping.getDeclaredFieldMappings(ClassMapping.java:781)
at kodo.jdbc.meta.ClassMapping.resolve(ClassMapping.java:936)
at kodo.jdbc.meta.BaseClassMapping.resolve(BaseClassMapping.java:302)
at kodo.jdbc.meta.MappingRepository.resolve(MappingRepository.java:381)
at kodo.jdbc.meta.MappingRepository.getMapping(MappingRepository.java:298)
at
kodo.jdbc.meta.MappingRepository.getMappings(MappingRepository.java:272)
at
kodo.jdbc.meta.MappingRepository.getMetaDatas(MappingRepository.java:256)
at kodo.query.QueryImpl.internalCompile(QueryImpl.java:559)
at kodo.query.QueryImpl.compile(QueryImpl.java:523)
---------------- First mapping file
<jdo>
<package name="firstpackage">
<class name="ApplicationDefImpl">
<extension vendor-name="kodo" key="class-column" value="none"/>
<extension vendor-name="kodo" key="jdbc-class-map"
value="base">
<extension vendor-name="kodo" key="pk-column" value="ID"/>
<extension vendor-name="kodo" key="table"
value="APPLICATION"/>
</extension>
<extension vendor-name="kodo" key="jdbc-version-ind"
value="version-number">
<extension vendor-name="kodo" key="column"
value="VERSION"/>
</extension>
<extension vendor-name="kodo" key="lock-column"
value="VERSION"/>
<extension vendor-name="kodo" key="pk-column" value="ID"/>
<extension vendor-name="kodo" key="table" value="APPLICATION"/>
<field name="interceptors">
<collection
element-type="secondpackage.InterceptorDefImpl"/>
<extension vendor-name="kodo" key="inverse"
value="application"/>
<extension vendor-name="kodo" key="jdbc-field-map"
value="one-many">
<extension vendor-name="kodo" key="ref-column.ID"
value="APPLICATION_ID"/>
<extension vendor-name="kodo" key="table"
value="ZSYS_INTERCEPTOR"/>
</extension>
</field>
</class>
</package>
</jdo>
---------------- Second mapping file
<jdo>
<package name="secondpackage">
<class name="InterceptorDefImpl">
<extension vendor-name="kodo" key="class-column" value="none"/>
<extension vendor-name="kodo" key="jdbc-class-map"
value="base">
<extension vendor-name="kodo" key="pk-column" value="ID"/>
<extension vendor-name="kodo" key="table"
value="ZSYS_INTERCEPTOR"/>
</extension>
<extension vendor-name="kodo" key="lock-column" value="none"/>
<extension vendor-name="kodo" key="pk-column" value="ID"/>
<extension vendor-name="kodo" key="table"
value="ZSYS_INTERCEPTOR"/>
<field name="interceptor" persistence-modifier="none"/>
<field name="application">
<extension vendor-name="kodo" key="data-column"
value="APPLICATION_ID"/>
<extension vendor-name="kodo" key="jdbc-field-map"
value="one-one">
<extension vendor-name="kodo" key="column.JDOIDX"
value="APPLICATION_ID"/>
</extension>
</field>
</class>
</package>
</jdo> -
ClassCastException in KodoHelper
Hi Folks
I received a ClassCastException when invoking KodoHelper.getPersistenceManagerFactory(File). The exception implies to me that Kodo is casting its PersistenceManagerFactoryImpl class to some incompatible type.
Here is the contents of kodo.properties:
javax.jdo.PersistenceManagerFactoryClass=kodo.jdo.PersistenceManagerFactoryImpl
kodo.ConnectionURL=jdbc:hsqldb:file://c:/projects/temporal/db/temporaldb
kodo.ConnectionDriverName=org.hsqldb.jdbcDriver
kodo.ConnectionUserName=sa
kodo.ConnectionPassword=
kodo.MetaDataFactory=jdo
kodo.Log=DefaultLevel=WARN, Runtime=TRACE, Tool=TRACE
Here is the log output:
C:\dev\jdk1.5.0_07\bin\java -Didea.launcher.port=7542 "-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA 5.1\bin" -Dfile.encoding=windows-1252 -classpath "C:\dev\jdk1.5.0_07\jre\lib\charsets.jar;C:\dev\jdk1.5.0_07\jre\lib\deploy.jar;C:\dev\jdk1.5.0_07\jre\lib\javaws.jar;C:\dev\jdk1.5.0_07\jre\lib\jce.jar;C:\dev\jdk1.5.0_07\jre\lib\jsse.jar;C:\dev\jdk1.5.0_07\jre\lib\plugin.jar;C:\dev\jdk1.5.0_07\jre\lib\rt.jar;C:\dev\jdk1.5.0_07\jre\lib\ext\dnsns.jar;C:\dev\jdk1.5.0_07\jre\lib\ext\localedata.jar;C:\dev\jdk1.5.0_07\jre\lib\ext\sunjce_provider.jar;C:\dev\jdk1.5.0_07\jre\lib\ext\sunpkcs11.jar;C:\projects\temporal\build\classes;C:\dev\kodo-4.0.1\lib\xml-apis.jar;C:\dev\kodo-4.0.1\lib\sqlline.jar;C:\dev\kodo-4.0.1\lib\jdbc2_0-stdext.jar;C:\dev\kodo-4.0.1\lib\xalan.jar;C:\dev\kodo-4.0.1\lib\jdo.jar;C:\dev\kodo-4.0.1\lib\kodo.jar;C:\dev\kodo-4.0.1\lib\jpa.jar;C:\dev\kodo-4.0.1\lib\xercesImpl.jar;C:\dev\kodo-4.0.1\lib\wldfchart.jar;C:\dev\kodo-4.0.1\lib\kodo-api.jar;C:\dev\kodo-4.0.1\lib\jdbc-hsql-1_8_0.jar;C:\dev\kodo-4.0.1\lib\jline.jar;C:\dev\kodo-4.0.1\lib\jca1.0.jar;C:\dev\kodo-4.0.1\lib\jndi.jar;C:\dev\kodo-4.0.1\lib\kodo-runtime.jar;C:\dev\kodo-4.0.1\lib\jta-spec1_0_1.jar;C:\dev\kodo-4.0.1\lib\kodo-wl81manage.jar;C:\dev\kodo-4.0.1\lib\kodo-jboss4manage.jar;C:\projects\temporal\build\config;C:\Program Files\JetBrains\IntelliJ IDEA 5.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain net.uk.roos.util.SeedDatabase
Using kodo configuration from resource: C:\projects\temporal\build\config\kodo.properties
0 TRACE [main] kodo.Runtime - Setting the given properties into configuration: {kodo.Log=DefaultLevel=WARN, Runtime=TRACE, Tool=TRACE, kodo.ConnectionPassword=, kodo.ConnectionURL=jdbc:hsqldb:file://c:/projects/temporal/db/temporaldb, javax.jdo.PersistenceManagerFactoryClass=kodo.jdo.PersistenceManagerFactoryImpl, kodo.MetaDataFactory=jdo, kodo.ConnectionUserName=sa, kodo.ConnectionDriverName=org.hsqldb.jdbcDriver}
281 INFO [main] kodo.Runtime - Starting Kodo 4.0.1
281 DEBUG [main] kodo.Runtime - License capabilities: "Kodo Standard Edition,Remote Commit Listeners,Kodo Community Edition,Datacache Plug-in,Enterprise Databases,Query Extensions,Performance Pack,Statement Batching,Kodo Enterprise Edition,Custom Fetch Groups,Managed Environment,Developer Tools,Custom DBDictionaries" Expiration: "-" Maintenance expiration: "-"
281 TRACE [main] kodo.Runtime - kodo.ManagementConfiguration: none
kodo.PersistenceServer: false
kodo.Compatibility: default
kodo.OrphanedKeyAction: log
kodo.jdbc.Schemas:
kodo.jdbc.LRSSize: query
kodo.DynamicDataStructs: false
kodo.RetryClassRegistration: false
kodo.jdbc.SchemaFactory: dynamic
kodo.ConnectionURL: jdbc:hsqldb:file://c:/projects/temporal/db/temporaldb
kodo.jdbc.SynchronizeMappings: false
kodo.BrokerImpl: default
kodo.ConnectionDriverName: org.hsqldb.jdbcDriver
kodo.MetaDataFactory: jdo
kodo.jdbc.MappingDefaults: jdo
kodo.ManagedRuntime: auto
kodo.QueryCompilationCache: true
kodo.ReadLockLevel: read
kodo.jdbc.FetchDirection: forward
kodo.DataCacheTimeout: -1
kodo.ClassResolver: default
kodo.ConnectionUserName: sa
kodo.jdbc.TransactionIsolation: default
kodo.IgnoreChanges: false
kodo.InverseManager: false
kodo.ConnectionRetainMode: on-demand
kodo.Sequence: table
kodo.SavepointManager: in-mem
kodo.ConnectionPassword:
kodo.AutoDetach:
kodo.TransactionMode: local
kodo.NontransactionalRead: true
kodo.DetachState: loaded
kodo.AutoClear: datastore
javax.jdo.PersistenceManagerFactoryClass: kodo.jdo.PersistenceManagerFactoryImpl
kodo.BrokerFactory: jdbc
kodo.Multithreaded: false
kodo.Log: DefaultLevel=WARN, Runtime=TRACE, Tool=TRACE
kodo.QueryCache: true
kodo.jdbc.UpdateManager: default
kodo.jdbc.ResultSetType: forward-only
kodo.ProxyManager: default
kodo.LockTimeout: -1
kodo.RetainState: true
kodo.RestoreState: immutable
kodo.FlushBeforeQueries: true
kodo.ConnectionFactoryMode: local
kodo.FetchBatchSize: -1
kodo.Optimistic: true
kodo.jdbc.EagerFetchMode: parallel
kodo.FetchGroups:
kodo.LockManager: pessimistic
kodo.jdbc.SubclassFetchMode: join
kodo.NontransactionalWrite: false
kodo.WriteLockLevel: write
Exception in thread "main" java.lang.ClassCastException: kodo.jdo.PersistenceManagerFactoryImpl
at kodo.runtime.KodoHelper.getPersistenceManagerFactory(KodoHelper.java:66)
at net.uk.roos.util.SeedDatabase.go(Unknown Source)
at net.uk.roos.util.SeedDatabase.main(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.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Process finished with exit code 1
Thanks and regards, Robin.
Robin Roos (robin at roos dot uk dot net)I solved my problem by defining a Properties object with the required configuration information and using JDOHelper.getPersistenceManagerFactory(Properties) instead of (File).
Kind regards, Robin. -
Contains Queries on Empty Collections
I'm running into the following problem when attempting a JDO query which
uses the .contains() operator on multiple collections, where one of the
collections is empty.
My class contains two vectors, both of which contain strings. I want to run
a query that returns all instances of TestClass that contain a certain
string in one of the two lists. I have done roughly what is outlined below.
1) The class looks like:
public class TestClass
private Vector _collection1;
private Vector _collection2;
2) The metadata in system.jdo looks like:
<class name="TestClass">
<field name="_collection1">
<collection element-type="java.lang.String"/>
</field>
<field name="_collection2">
<collection element-type="java.lang.String"/>
</field>
</class>
3) I construct the query as follows:
// pm is the existing persistence manager
Query query = pm.newQuery();
query.setClass( TestClass.class );
query.setCandidates( pm.getExtent( TestClass.class, true ) );
query.setFilter( "_collection1.contains( string ) ||
_collection2.contains( string )" );
query.declareParameters( "String string" );
Collection results = (Collection) query.executeWithArray( new Object[]
{ "searchString" } );
4) The resulting SQL query (for SQL/Server) looks like:
SELECT DISTINCT
t0.JDOIDX,
t0.JDOCLASSX,
t0.JDOLOCKX
FROM
TESTCLASS__COLLECTION2X t2,
TESTCLASSX t0,
TESTCLASS__COLLECTION1X t1
WHERE
t1.COLLECTION1X = 'searchString'
OR (t2.COLLECTION2X = 'searchString')
AND t0.JDOIDX = t1.JDOIDX
AND t0.JDOIDX = t2.JDOIDX
Suppose that the target string is located in the first collection of some
instance of TestClass. Also suppose that there are no strings in the second
collection. Under these circumstances, the query will not return this
instance.
Is there a way to work around this other than running two separate queries?
Is this a bug or is this the expected behaviour?
Any help on this is much appreciated.
Regards,
Sasha Haghani.Hi David,
I've tried this approach as well and am now getting a different error.
Using:
1) query filter: "( _collection1.contains( var ) && var == param ) || (
_collection2.contains( var ) && var == param )"
2) parameter string: "String param"
3) variable string: "String var"
4) parameters: new Object[] { "value" }
The following exception raised is:
com.techtrader.modules.jdo.impl.jdbc.sql.SQLExceptionWrapper: [SQL=SELECT
t0.JDOIDX, t0.JDOCLASSX, t0.JDOLOCKX FROM TESTCLASSX t0 WHERE variable =
'value' OR (*variable* = 'value')] Line 1: Incorrect syntax near '*'.
Severity 15, State 1 <rest of exception message omitted>
at
com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCFieldData.load(JDBCFieldDat
a.java:127)
at
com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCQuery.executeQuery(JDBCQuer
y.java:33)
at
com.techtrader.modules.jdo.query.QueryImpl.executeWithMap(QueryImpl.java:330
at
com.techtrader.modules.jdo.query.QueryImpl.executeWithArray(QueryImpl.java:3
93)
As you can see from above, the generated SQL statement looks like:
SELECT
t0.JDOIDX,
t0.JDOCLASSX,
t0.JDOLOCKX
FROM
TESTCLASSX t0
WHERE
variable = 'value'
OR (*variable* = 'value')
Additionally, if I change the filter to "( (_collection1.contains( var )) &&
(var == param) )", I get the following exception:
com.techtrader.modules.jdo.impl.jdbc.sql.SQLExceptionWrapper: [SQL=SELECT
t0.JDOIDX, t0.JDOCLASSX, t0.JDOLOCKX FROM TESTCLASSX t0 WHERE variable =
'value'] Line 1: Incorrect syntax near '*'. Severity 15, State 1, <rest of
exception message omitted>
at
com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCFieldData.load(JDBCFieldDat
a.java:127)
at
com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCQuery.executeQuery(JDBCQuer
y.java:33)
at
com.techtrader.modules.jdo.query.QueryImpl.executeWithMap(QueryImpl.java:330
at
com.techtrader.modules.jdo.query.QueryImpl.executeWithArray(QueryImpl.java:3
93)
Again, the generated SQL looks like:
SELECT
t0.JDOIDX,
t0.JDOCLASSX,
t0.JDOLOCKX
FROM
TESTCLASSX t0
WHERE
variable = 'value'
We are using multiple queries for now and aggregating the results by hand,
so this issue isn't blocking us.
Regards,
Sasha Haghani.
"David Ezzio" <[email protected]> wrote in message
news:[email protected]...
Hi Sasha,
One thing that appears "unusual", if you will, about your queries
is that you are using a parameter in the contains() method rather
than a variable. The spec mentions a different usage pattern along
the following lines: "collection.contains(string) && string ==
strParam" where "strParam" is declared as the parameter, and
"string" is declared as a variable. You may have already tried this
as a variation. Your usage appears permitted as far as the spec
goes, but may not have been tested for Kodo.
David Ezzio
Sasha Haghani wrote:
Hi Patrick,
I tried your workaround and the following exception was thrown:
javax.jdo.JDOUserException: The given filter/ordering String "( (
(_collection1.isEmpty() == false) && (_collection1.contains( string )) )
||
( (_collection2.isEmpty() == false) && (_collection2.contains(
string )) ) )" is not valid. Make sure all parentheses are properlymatched
and that the filter uses proper Java syntax.
at
com.techtrader.modules.jdo.query.QueryImpl.getExpression(QueryImpl.java:371)
at
com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCQuery.getExpression(JDBCQue
ry.java:49)
at
com.techtrader.modules.jdo.query.QueryImpl.executeWithMap(QueryImpl.java:312
at
com.techtrader.modules.jdo.query.QueryImpl.executeWithArray(QueryImpl.java:3
93)
I tried three variations on the parentheses used in the filterexpression.
All yielded the same exception. I couldn't find any glaring errors or
omissions in the query. The string parameter is also properly declared.Is
this possibly another bug?
I'm executing multiple individual queries to acheive my goal for thetime
being. Let me know if I'm doing anything wrong or if these are bugs,let me
know when they are fixed. Thanks much.
Regards,
Sasha Haghani.
"Patrick Linskey" <[email protected]> wrote in message
news:[email protected]...
Sasha,
This sounds like a bug. I will enter it into our database and get back
to you later.
Meanwhile, you may be able to work around it using something like
query.setFilter (
"(_collection1.isEmpty () == false && _collection1.contains(string))"
+ " || (_collection2.isEmpty () == false &&
_collection2.contains
(string))" );
-Patrick Linskey -
Kodo says classes are not enhanced, but they are!
Hello,
I have run into a problem with Kodo and a web-app that I just can't solve.
I try to access JDO-objects from within a web-application (that uses
Struts). When I do this, I get an exception from Kodo saying the classes are
not enhanced. But I am sure they are enhanced. The exception is:
javax.jdo.JDOFatalUserException: The system could not initialize; the
following registered persistent types have not been enhanced: [class
de.mediateam.quizmaster.data.User, class
de.mediateam.quizmaster.data.Category, class
de.mediateam.quizmaster.data.Topic, class
de.mediateam.quizmaster.data.Test].
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java:190)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetu
p(PersistenceManagerFactoryImpl.java:496)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:61)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:50)
at
de.mediateam.quizmaster.persist.jdo.JDOFactory.getPersistenceManager(JDOFact
ory.java)
<snip>
There are two facts about this I don't understand:
1. It was working before, but then something changed (or I changed something
but I really don't remember it) and now it won't work anymore. I tried to go
back to an earlier version of my project but got the same problem.
2. It is really strange, that when I access the database from outside the
web-app (I have a small seed programm to insert some data), it works fine.
No problems.
I am sure that it is the enhanced classes loaded from within the web-app
because when I simply delete them Kodo won't find the classes at all. All
Kodo-jars are in the web-context/WEB-INF/lib directory.
Could anybody tell me the possible reasons that can cause this exception? Is
it just a test for "implements PersistenceCapable" that is done in the
setup-method, or maybe a bit more? I really can't think of anything else I
could do.
Thanks
MartinHello,
I have run into a problem with Kodo and a web-app that I just can't solve.
I try to access JDO-objects from within a web-application (that uses
Struts). When I do this, I get an exception from Kodo saying the classes are
not enhanced. But I am sure they are enhanced. The exception is:
javax.jdo.JDOFatalUserException: The system could not initialize; the
following registered persistent types have not been enhanced: [class
de.mediateam.quizmaster.data.User, class
de.mediateam.quizmaster.data.Category, class
de.mediateam.quizmaster.data.Topic, class
de.mediateam.quizmaster.data.Test].
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java:190)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetu
p(PersistenceManagerFactoryImpl.java:496)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:61)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:50)
at
de.mediateam.quizmaster.persist.jdo.JDOFactory.getPersistenceManager(JDOFact
ory.java)
<snip>
There are two facts about this I don't understand:
1. It was working before, but then something changed (or I changed something
but I really don't remember it) and now it won't work anymore. I tried to go
back to an earlier version of my project but got the same problem.
2. It is really strange, that when I access the database from outside the
web-app (I have a small seed programm to insert some data), it works fine.
No problems.
I am sure that it is the enhanced classes loaded from within the web-app
because when I simply delete them Kodo won't find the classes at all. All
Kodo-jars are in the web-context/WEB-INF/lib directory.
Could anybody tell me the possible reasons that can cause this exception? Is
it just a test for "implements PersistenceCapable" that is done in the
setup-method, or maybe a bit more? I really can't think of anything else I
could do.
Thanks
Martin -
I think I know the answer to this, but I have to check.
Are there more than one kind of <b>Express</b> messages in SAP?
Are there more than one kind of <b>Persistent</b> message type in SAP?
Or are the message types pretty much JMS specifications only ?
Thanks, JohnHi,
The messages which are used in JMS are the specifications of JMS only and not that of SAP.Two ways of sending messages in JMS as u know is "topic" & "subscribe".SAP WAS server which supports J2EE specifications supports JMS there by the msgs are pretty much JMS specifications only.
If you want to store ur java objects as persistent in DB (not related to this q) then SAP WAS supports JDO,SQLJ,JDBC etc.
Hope it helps.
Rdgs,
Guru -
2 Phase Commit Global Transaction resolution question.
Hi All,
I hope this is the right place to ask this question.
I'm trying to figure out what generally happens after the JTA AbandonTimeout occurs.
Here is the scenario.
1. Transaction Manager sends Commit to Resource Managers 1 and 2.
2. Resource Manager 1 receives and processes commit. Resource Manager 2 doesn't receive commit.
3. Resource Manager 1 returns acknowledgement.
4. Transaction Manager times out and starts recovery process.
5. Resource Manager 2 session times out and is set to in-doubt.
6. Transaction Manager can never reconnect to Resource Manager 2, and the AbandonTimeout is reached.
7. Transaction Manager abandons RM2 transaction.
8. Does Transaction manager return an error for global transaction?
I'm guessing the application the Transaction Manager is working for has its own timeouts which would most likely be a smaller value than the abandon timeout. So the transaction would most likely timeout. I'm just trying to make sure that the Global Transaction is not sent back as complete at a later time if the abandon timeout is reached.
Any Thoughts?
Thanks,
MattPetr-
In article <avflf9$ccu$[email protected]>, Petr Bulanek wrote:
Hi Marc,
Well, what does it really mean that \'Kodo will not respect the
semantics of the 2-phase-commit protocol\'?Are you saying that Kodo may commit my changes even if the other datastore
decides to roll the transaction back at the last moment?
That if Kodo has difficulties to commit, it would not roolback the global
transaction and as a result the other datastores will commit?You are correct: we currently do not do anything special for 2 phase
commit at all.
I mean, this is quite important and would like to know exactly what to
expect so I can work around it.
Thank you,
Petr
P.S.
I \'think\' I saw the plan to fix this in 2.5.x. What is the planned
release date?It is in the milestone for 2.5. We can't make any committments on its
release date, but it will hopefully be out within 2 months.
Marc Prud\'hommeaux wrote:
Petr-
You can integrate Kodo\'s JDO transactions into the Application Server\'s
global transaction (which might also commit multiple other
transactions). The only issue is that Kodo will not respect the
semantics of the 2-phase-commit protocol.
We expect to have this issue resolved soon.
In article <avdri3$f2o$[email protected]>, Petr Bulanek wrote:
I have noticed that there is open bug (211) that refers to 2 phase commit
and I just curious what the exact problem is.
Does that imply that the current version (2.4) does not allow 2 phase
commit?
Let\'s say I need to integrate JDO into global transaction (managed by App
server) and I may need during that transaction update multiple databases.
It could be implemented via JDO (multiple PMFs) or it could be a
combination of JDO and JDBC/EJB happening during the same transaction.
Am I likely to hit a problem if I do that?
Thank you,
Petr
Marc Prud\'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com
Marc Prud'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com -
NullPointerException in JDBCExpressionFactory
Hi-
I'm setting up Kodo for the first time with my own classes using
a PostgreSQL database. I worked through the tutorial without
encountering any problems, but I'm stuck on this error when I try to
run a method in "StateTest" which runs a query on a persistent object
"State", which in turn runs off a pre-existing database. I've run
jdoc on them both, and I simplified State so it's:
public class State {
private int id;
private String abbrev;
... usual get and set methods
public class StateTest {
public void testSelect() throws ClassNotFoundException {
PersistenceManager pm = JDOFactory.getPersistenceManager ();
Class cls=Class.forName("com.bridgecanada.dao.State");
Extent extent = pm.getExtent (cls, false);
assert (extent!=null);
assert (pm!=null);
assert (cls!=null);
// String filter="id==6";
// Query query = pm.newQuery (cls, extent, filter);
Query query = pm.newQuery (cls, extent);
Collection states = (Collection) query.execute ();
This gives me an Null pointer exception at the query.execute() line:
java.lang.NullPointerException
at com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCExpressionFactory.<init>(JDBCExpressionFactory.java:37)
at com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCQuery.getExpressionFactory(JDBCQuery.java:40)
at com.techtrader.modules.jdo.query.QueryImpl.getExpression(QueryImpl.java:367)
at com.techtrader.modules.jdo.impl.jdbc.runtime.JDBCQuery.getExpression(JDBCQuery.java:49)
at com.techtrader.modules.jdo.query.QueryImpl.executeWithMap(QueryImpl.java:312)
at com.techtrader.modules.jdo.query.QueryImpl.execute(QueryImpl.java:279)
at com.bridgecanada.dao.StateTest.testSelect(StateTest.java:37)
Any idea what this might be?
Thanks for any help!
-Mike
Mike Bridge
<[email protected]>Hello Mike --
I just wanted to point out that Kodo was adding extra fields to the
table because you did not declare the 'id' and other fields to be
non-persistent in your metadata. Any non-static, non-final field is
assumed by JDO to be persistent unless you mark it otherwise in the
metadata with the 'persistence-modifier="none"` attribute setting.
-- Abe White
Kodo Product Team
Mike Bridge wrote:
Hi Patrick,
Here's the setup of the simple table I'm using (on postgresql 7.1)
CREATE TABLE state (
id INT,
abbrev CHAR(5)
CREATE UNIQUE INDEX pk_state ON state(id);
INSERT INTO state(id, abbrev) VALUES (1, 'ab');
INSERT INTO state(id, abbrev) VALUES (2, 'bc');
INSERT INTO state(id, abbrev) VALUES (3, 'sk');
INSERT INTO state(id, abbrev) VALUES (4, 'mb');
INSERT INTO state(id, abbrev) VALUES (5, 'on');
INSERT INTO state(id, abbrev) VALUES (6, 'qc');
The state class is:
package com.bridgecanada.dao;
public class State /*extends MultilingualImpl*/ {
private int id;
private String abbrev;
public State(int id, String abbrev) {
this.id=id;
this.abbrev=abbrev;
public int getId() {
return id;
public void setId(int id) {
this.id=id;
public String getAbbrev() {
return this.abbrev;
public void setAbbrev(String abbrev) {
this.abbrev=abbrev;
The calling method is (using the JDOFactory class from the example):
public void testSelect() throws ClassNotFoundException {
PersistenceManager pm = JDOFactory.getPersistenceManager ();
Class cls=Class.forName("com.bridgecanada.dao.State");
Extent extent = pm.getExtent (cls, false);
assert (extent!=null);
assert (pm!=null);
assert (cls!=null);
// String filter="id==6";
Query query = pm.newQuery (cls, extent, "id==6");
//Query query = pm.newQuery (cls, extent);
Collection states = (Collection) query.execute ();
Iterator iter=states.iterator();
while (iter.hasNext()) {
System.out.println("found "+iter.next());
My package.jdo file is:
<package name="com.bridgecanada.dao">
<class name="State">
<extension vendor-name="tt" key="table" value="state"/>
<extension vendor-name="tt" key="pk-column" value="id"/>
<extension vendor-name="tt" key="lock-column" value="none"/>
<extension vendor-name="tt" key="class-column" value="none"/>
<field name="abbrev">
<extension vendor-name="tt" key="data-column" value="abbrev"/>
</field>
</class>
</package>
And the persistent-types definition of my system.prefs is:
<persistent-types>
<array>
<value>com.bridgecanada.dao.State</value>
</array>
</persistent-types>
Thanks!
-Mike
On Wed, Aug 15, 2001 at 07:46:21PM +0200, Patrick Linskey wrote:
Mike,
Actually, that looks like a bug. What do the other class entries in your
package.jdo look like, and what is the query that you are performing? Are
there relations to any other persistence-capable classes in your test?
Based on that SQL, it looks as though Kodo is trying to perform a join, and
erroneously using t0.IDX as the primary key column rather than your id
column.
Thanks,
Patrick
Patrick Linskey
[email protected]
----- Original Message -----
From: "Mike Bridge" <[email protected]>
To: "David Ezzio" <[email protected]>
Cc: "Tech Trader JDO List" <[email protected]>
Sent: Thursday, August 16, 2001 12:41 AM
Subject: Re: NullPointerException in JDBCExpressionFactory
Hi David,
I realized that this was happening because I didn't have the
<persistent-types> tag in the system.prefs file.
However, I now have another problem... I am trying to make
this work with my legacy database rather than have kodo create
me a new one. My package.jdo file looks like this:
<package name="com.bridgecanada.dao">
<class name="State">
<extension vendor-name="tt" key="table" value="state"/>
<extension vendor-name="tt" key="pk-column" value="id"/>
<extension vendor-name="tt" key="lock-column" value="none"/>
<extension vendor-name="tt" key="class-column" value="none"/>
<field name="abbrev">
<extension vendor-name="tt" key="data-column" value="abbrev"/>
</field>
</class>
</package>
However, those same queries I tried before produce:
javax.jdo.JDODataStoreException: [SQL=SELECT t0.id, t0.abbrev, t0.IDX,
t0.STATE_ENX, t0.STATE_ESX, t0.STATE_FRX FROM state t0 ERROR: No suchattribute or function 'idx'
It looks like Kodo is still expecting some Kodo-managed fields. Do I need
to add some other tags to my package.jdo file?
Thanks!
-Mike
On Wed, Aug 15, 2001 at 08:45:45AM -0400, David Ezzio wrote:
Mike,
Have you tried setting the filter to the empty string?
David
Mike Bridge
<[email protected]> -
OutOfMemoryError with many deployed apps
We have 62 applications (EARs) deployed. 21 of these application contains a single stateless session bean and somewhere between 3 and 40 entity beans each. In total we currently have 466 entity beans. The rest of the applications contain only a single stateful session bean each.
When all these applications are enabled we can run for a few minutes before getting an OutOfMemoryError. When we disable 20 of the latter kind, the ones with stateful session beans, the server seems to work OK.
We have not yet, for obvious reasons, rolled the system out to the users so only a few developers are using it. The clients are fat Swing clients that talk IIOP with the server.
In one of the beans we have a method that does three consecutive System.gc() and then measures the heap usage. With all applications enabled only around 30% of the maximum heap space is used, even right before the server crashes. The heap max is set to 512MB and since the usage rate is so low it doesn't seem meaningful to increase it. Also, if there is a leak then just increasing the heap may give us a longer uptime without really solving the problem. We suspect that there is some other limit somewhere, but since the error message in the log doesn't have a stack trace it is very difficult to narrow it down.
Has anyone had a similar problem and maybe found a solution?
TIA,
/GunnarI've now tried switching off UseTLab, which had no effect. I've tried UseParallelGC earlier, also with no effect. When the server goes down there are only around 80 threads running, and I dont think that qualifies as a "large number of threads".
Some other info:
Hardware: Dell PowerEdge 2650, 4 x 2388 MHz CPU's, 4 GB RAM and a 6 GB paging file.
OS: Windows 2000 Server v 5.0.2195 SP4
JVM: Java HotSpot(TM) Server VM, Version 1.4.2_04
Instead of listing the JVM options, here is the complete server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.0//EN" "file:///C:/Sun/AppServer7/lib/dtds/sun-server_1_1.dtd">
<!--
Copyright (c) 2002 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
-->
<!-- server_7_0_dtd version: 1.1.2.39 -->
<server locale="en_US" name="server1" log-root="C:/Sun/AppServer7/domains/domain1/server1/logs" application-root="C:/Sun/AppServer7/domains/domain1/server1/applications" session-store="C:/Sun/AppServer7/domains/domain1/server1/session-store">
<http-service qos-enabled="false" qos-metrics-interval-in-seconds="30" qos-recompute-time-interval-in-millis="100">
<http-listener id="http-listener-1" address="0.0.0.0" port="81" acceptor-threads="1" blocking-enabled="false" security-enabled="false" default-virtual-server="server1" server-name="toker" enabled="true"/>
<mime id="mime1" file="mime.types"/>
<acl id="acl1" file="C:/Sun/AppServer7/domains/domain1/server1/config/generated.server1.acl"/>
<virtual-server-class id="defaultclass" config-file="obj.conf" default-object="default" accept-language="false" enabled="true">
<virtual-server id="server1" config-file="server1-obj.conf" http-listeners="http-listener-1" hosts="toker" mime="mime1" state="on" accept-language="false">
<http-qos enforce-bandwidth-limit="false" enforce-connection-limit="false"/>
<auth-db id="default" database="default"/>
<property name="dir" value=""/>
<property name="nice" value=""/>
<property name="user" value=""/>
<property name="group" value=""/>
<property name="chroot" value=""/>
<property name="docroot" value="D:/Project"/>
<property name="accesslog" value="C:/Sun/AppServer7/domains/domain1/server1/logs/access"/>
</virtual-server>
</virtual-server-class>
</http-service>
<iiop-service>
<orb message-fragment-size="1024" steady-thread-pool-size="10" max-thread-pool-size="200" idle-thread-timeout-in-seconds="300" max-connections="1024" monitoring-enabled="false"/>
<iiop-listener id="orb-listener-1" address="0.0.0.0" port="3700" enabled="true">
</iiop-listener>
</iiop-service>
<web-container monitoring-enabled="false">
</web-container>
<ejb-container steady-pool-size="16" pool-resize-quantity="8" max-pool-size="64" cache-resize-quantity="32" max-cache-size="256" pool-idle-timeout-in-seconds="600" cache-idle-timeout-in-seconds="600" removal-timeout-in-seconds="5400" victim-selection-policy="nru" commit-option="B" monitoring-enabled="false">
</ejb-container>
<mdb-container steady-pool-size="10" pool-resize-quantity="2" max-pool-size="60" idle-timeout-in-seconds="600" monitoring-enabled="false">
</mdb-container>
<jms-service port="7676" admin-user-name="admin" admin-password="admin" init-timeout-in-seconds="30" enabled="true">
</jms-service>
<log-service file="C:/Sun/AppServer7/domains/domain1/server1/logs/server.log" level="INFO" log-stdout="true" log-stderr="true" echo-log-messages-to-stderr="true" create-console="true" log-virtual-server-id="false" use-system-logging="false">
</log-service>
<security-service default-realm="ldap" anonymous-role="ANYONE" audit-enabled="false">
<auth-realm name="file" classname="com.iplanet.ias.security.auth.realm.file.FileRealm">
<property name="file" value="C:/Sun/AppServer7/domains/domain1/server1/config/keyfile"/>
<property name="jaas-context" value="fileRealm"/>
</auth-realm>
<auth-realm name="ldap" classname="com.iplanet.ias.security.auth.realm.ldap.LDAPRealm">
<property value="ldap://localhost:389" name="directory"/>
<property value="ou=People,dc=pliktverket,dc=local" name="base-dn"/>
<property value="ldapRealm" name="jaas-context"/>
<property value="ou=Groups,dc=pliktverket,dc=local" name="group-base-dn"/>
</auth-realm>
<auth-realm name="certificate" classname="com.iplanet.ias.security.auth.realm.certificate.CertificateRealm">
</auth-realm>
<!--
<auth-realm name="solaris" classname="com.iplanet.ias.security.auth.realm.solaris.SolarisRealm">
<property name="jaas-context" value="solarisRealm"/>
</auth-realm>
-->
</security-service>
<transaction-service automatic-recovery="false" timeout-in-seconds="0" tx-log-dir="C:/Sun/AppServer7/domains/domain1/server1/logs" heuristic-decision="rollback" keypoint-interval="2048" monitoring-enabled="false">
</transaction-service>
<java-config java-home="C:/Sun/AppServer7/jdk" server-classpath="/usr/share/lib/mps/secv1/jss3.jar;C:/Sun/AppServer7/lib/appserv-rt.jar;${java.home}/lib/tools.jar;C:/Sun/AppServer7/lib/appserv-ext.jar;C:/Sun/AppServer7/lib/appserv-cmp.jar;C:\Sun\AppServer7\share\lib/mail.jar;C:/Sun/AppServer7/lib/appserv-ideplugin.jar;C:\Sun\AppServer7\imq\lib/imq.jar;C:\Sun\AppServer7\imq\lib/jaxm-api.jar;C:\Sun\AppServer7\imq\lib/imqadmin.jar;C:\Sun\AppServer7\imq\lib/imqutil.jar;C:/Sun/AppServer7/lib/appserv-admin.jar;C:\Sun\AppServer7\share\lib/jaxrpc-impl.jar;C:\Sun\AppServer7\share\lib/jaxrpc-api.jar;C:\Sun\AppServer7\share\lib/jaxr-impl.jar;C:\Sun\AppServer7\share\lib/jaxr-api.jar;C:\Sun\AppServer7\share\lib/activation.jar;C:\Sun\AppServer7\share\lib/saaj-api.jar;C:\Sun\AppServer7\share\lib/saaj-impl.jar;C:\Sun\AppServer7\share\lib/commons-logging.jar;C:\Sun\AppServer7\imq\lib/fscontext.jar;C:\Sun\AppServer7\imq\lib/providerutil.jar;C:/Sun/AppServer7/lib/appserv-jstl.jar" classpath-suffix="C:/Sun/AppServer7/pointbase/client_tools/lib/pbclient42RE.jar" env-classpath-ignored="true" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n" debug-enabled="false" javac-options="-g" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g">
<profiler enabled="false" name="hprof">
<jvm-options>-Xrunhprof:file=profiler.log,thread=y</jvm-options>
</profiler>
<jvm-options>-Djava.security.policy=C:/Sun/AppServer7/domains/domain1/server1/config/server.policy</jvm-options>
<jvm-options>-Djava.security.auth.login.config=C:/Sun/AppServer7/domains/domain1/server1/config/login.conf</jvm-options>
<jvm-options>-Djava.util.logging.manager=com.iplanet.ias.server.logging.ServerLogManager</jvm-options>
<jvm-options>-Dcom.sun.aas.configRoot=C:/Sun/AppServer7\config</jvm-options>
<jvm-options>-Dcom.sun.aas.imqLib=C:\Sun\AppServer7\imq\lib</jvm-options>
<jvm-options>-Dcom.sun.aas.imqBin=C:\Sun\AppServer7\imq\bin</jvm-options>
<jvm-options>-Dcom.sun.aas.webServicesLib=C:\Sun\AppServer7\share\lib</jvm-options>
<jvm-options>-Dorg.xml.sax.parser=org.xml.sax.helpers.XMLReaderAdapter</jvm-options>
<jvm-options>-Dorg.xml.sax.driver=org.apache.crimson.parser.XMLReaderImpl</jvm-options>
<jvm-options>-Dcom.sun.jdo.api.persistence.model.multipleClassLoaders=reload</jvm-options>
<jvm-options>-Dbug.dependant.delete=true</jvm-options>
<jvm-options>-Dbug.many2many.add=true</jvm-options>
<jvm-options>-Dplis.docroot=D:/Project</jvm-options>
<jvm-options>-Djavax.rmi.CORBA.UtilClass=com.iplanet.ias.util.orbutil.IasUtilDelegate</jvm-options>
<jvm-options>-Xms1024m -Xmx1024m</jvm-options>
<jvm-options>-Dsun.rmi.dgc.server.gcInterval=3600000</jvm-options>
<jvm-options>-Xrs</jvm-options>
</java-config>
<resources>
<jdbc-resource enabled="true" pool-name="PlisPool" jndi-name="jdbc/PlisDS"/>
<jdbc-resource enabled="true" pool-name="PlisPool" jndi-name="jdo/PlisDBPM"/>
<persistence-manager-factory-resource factory-class="com.sun.jdo.spi.persistence.support.sqlstore.impl.PersistenceManagerFactoryImpl" enabled="true" jndi-name="jdo/PlisDB" jdbc-resource-jndi-name="jdo/PlisDBPM"/>
<jdbc-connection-pool steady-pool-size="1" max-pool-size="32" max-wait-time-in-millis="60000" pool-resize-quantity="2" idle-timeout-in-seconds="300" is-isolation-level-guaranteed="true" is-connection-validation-required="true" connection-validation-method="table" fail-all-connections="false" datasource-classname="com.informix.jdbcx.IfxDataSource" name="PlisPool" transaction-isolation-level="read-committed" validation-table-name="singleton">
<description>luna/plisutv/plis_db</description>
<property value="improved" name="user"/>
<property value="plis" name="password"/>
<property value="true" name="ifxDELIMIDENT"/>
<property value="1531" name="portNumber"/>
<property value="plis_db" name="databaseName"/>
<property value="plisutv" name="serverName"/>
<property value="luna" name="ifxIFXHOST"/>
</jdbc-connection-pool>
</resources>
<applications dynamic-reload-enabled="false" dynamic-reload-poll-interval-in-seconds="2">
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\CodeBook_2" name="CodeBook" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\UtbForband_1" name="UtbForband" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PlisServer_2" name="PlisServer" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\CivKpl_2" name="CivKpl" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Batch_2" name="Batch" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Faq_1" name="Faq" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Infra_4" name="Infra" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\InfraOvrigt_1" name="InfraOvrigt" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IntPerson_3" name="IntPerson" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\KoderBtkd_1" name="KoderBtkd" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\KoderOrg_1" name="KoderOrg" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\KoderOvrigt_1" name="KoderOvrigt" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Monstring_1" name="Monstring" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Person_4" name="Person" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PArende_1" name="PArende" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PArendeStod_1" name="PArendeStod" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Prov_1" name="Prov" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\ProvStod_1" name="ProvStod" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RegSlagning_1" name="RegSlagning" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Reseplanering_1" name="Reseplanering" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\Stodtabeller_1" name="Stodtabeller" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\BiBerUtb_1" name="BiBerUtb" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\BiPerson_3" name="BiPerson" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvApp_1" name="IvApp" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvCode_2" name="IvCode" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvEntity_2" name="IvEntity" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvFaq_1" name="IvFaq" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvMedd_1" name="IvMedd" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvRole_1" name="IvRole" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvSvc_1" name="IvSvc" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvUser_2" name="IvUser" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvVar_1" name="IvVar" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IpPlisNytt_1" name="IpPlisNytt" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IpServer_1" name="IpServer" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IpTjanst_2" name="IpTjanst" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\GuPer_1" name="GuPer" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\HvPerson_1" name="HvPerson" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PkPer_1" name="PkPer" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PpMed_1" name="PpMed" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PpNyPerson_3" name="PpNyPerson" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PpSyom_1" name="PpSyom" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkAns_1" name="RkAns" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkBsl_1" name="RkBsl" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkBtk_3" name="RkBtk" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkFar_2" name="RkFar" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkHor_2" name="RkHor" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkInr_1" name="RkInr" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkKom_1" name="RkKom" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkLkf_1" name="RkLkf" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkPar_1" name="RkPar" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkPko_1" name="RkPko" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkRer_1" name="RkRer" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkSlt_1" name="RkSlt" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkTil_1" name="RkTil" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\SaBmi_1" name="SaBmi" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\SaHan_1" name="SaHan" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\SaLnd_1" name="SaLnd" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\SaMas_1" name="SaMas" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\SaMon_1" name="SaMon" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\SaPup_1" name="SaPup" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\PlisRun_2" name="PlisRun" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IvProj_1" name="IvProj" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\RkOrg_3" name="RkOrg" virtual-servers="server1"/>
<j2ee-application enabled="true" location="C:\Sun\AppServer7\domains\domain1\server1\applications\j2ee-apps\IbSys_1" name="IbSys" virtual-servers="server1"/>
</applications>
</server>
/Gunnar -
Hi Experts,
I created an entity service with two simple attributes and sap.com/caf.core/Document entity service as a reference.I configured CAF and KM.I am using NW sneak preview.Then I configured Attachments UI pattern for this document.Then I configured Object editor for this entity service.
But when I try to upload an attachment through the Object Editor It is giving the fallowing error.
Descriptor for method with type create for aspect TestAttachments_attachment not found in the service com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceLocalLocalObjectImpl0
The strack trace for this error is :
com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean#sap.com/practiceproject#com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean.XAP:BO:sap.com/practiceproject/TestAttachments:update(TestAttachments, remote)#Administrator#22176#SAP J2EE Engine JTA Transaction : [0ffffffe8ffffffe6ffffffda00112c]####SAPEngine_Application_Thread[impl:3]_11##0#0#Path##Java###Caught #1#com.sap.caf.rt.exception.DataAccessException: Business entity sap.com/practiceproject/TestAttachments is locked by CAF & SAP BW integration
at com.sap.caf.rt.bol.da.jdo.JDODADataAccessService.store(JDODADataAccessService.java:892)
at com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean.update(TestAttachmentsServiceBean.java:223)
at com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean.update(TestAttachmentsServiceBean.java:135)
at com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceLocalLocalObjectImpl0.update(TestAttachmentsServiceLocalLocalObjectImpl0.java:478)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: com.sap.caf.rt.exception.DataAccessException: Business entity sap.com/practiceproject/TestAttachments is locked by CAF & SAP BW integration
at com.sap.caf.rt.bol.da.jdo.JDODADataAccessService.store(JDODADataAccessService.java:889)
... 58 more
Caused by: javax.jdo.JDODataStoreException: Object "3333bf70-a6d0-11dc-91e4-000d6140ca38" not found
at com.sap.jdo.sql.jdbc.request.JDBCRequest.objectNotFoundException(JDBCRequest.java:291)
at com.sap.jdo.sql.jdbc.request.basic.JDBCFetchRequest.execute(JDBCFetchRequest.java:151)
Can you plz tell me am i missing anything?
Thanks & Regards
Sampath.GHi Experts,
I created an entity service with two simple attributes and sap.com/caf.core/Document entity service as a reference.I configured CAF and KM.I am using NW sneak preview.Then I configured Attachments UI pattern for this document.Then I configured Object editor for this entity service.
But when I try to upload an attachment through the Object Editor It is giving the fallowing error.
Descriptor for method with type create for aspect TestAttachments_attachment not found in the service com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceLocalLocalObjectImpl0
The strack trace for this error is :
com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean#sap.com/practiceproject#com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean.XAP:BO:sap.com/practiceproject/TestAttachments:update(TestAttachments, remote)#Administrator#22176#SAP J2EE Engine JTA Transaction : [0ffffffe8ffffffe6ffffffda00112c]####SAPEngine_Application_Thread[impl:3]_11##0#0#Path##Java###Caught #1#com.sap.caf.rt.exception.DataAccessException: Business entity sap.com/practiceproject/TestAttachments is locked by CAF & SAP BW integration
at com.sap.caf.rt.bol.da.jdo.JDODADataAccessService.store(JDODADataAccessService.java:892)
at com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean.update(TestAttachmentsServiceBean.java:223)
at com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceBean.update(TestAttachmentsServiceBean.java:135)
at com.sap.practiceproject.besrv.testattachments.TestAttachmentsServiceLocalLocalObjectImpl0.update(TestAttachmentsServiceLocalLocalObjectImpl0.java:478)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: com.sap.caf.rt.exception.DataAccessException: Business entity sap.com/practiceproject/TestAttachments is locked by CAF & SAP BW integration
at com.sap.caf.rt.bol.da.jdo.JDODADataAccessService.store(JDODADataAccessService.java:889)
... 58 more
Caused by: javax.jdo.JDODataStoreException: Object "3333bf70-a6d0-11dc-91e4-000d6140ca38" not found
at com.sap.jdo.sql.jdbc.request.JDBCRequest.objectNotFoundException(JDBCRequest.java:291)
at com.sap.jdo.sql.jdbc.request.basic.JDBCFetchRequest.execute(JDBCFetchRequest.java:151)
Can you plz tell me am i missing anything?
Thanks & Regards
Sampath.G -
Hello,
I have some strange behaviors with KodoJDO, I use the last version.
1 - Runing error
=============
When I start an application that use Kodo, the VM do the following error ;
A nonfatal internal JIT (3.10.107(x)) error 'Relocation error: NULL
relocation target' has occurred in :
'org/apache/crimson/parser/Parser2.maybeComment (Z)Z': Interpreting
method. Please report this error in detail to
http://java.sun.com/cgi-bin/bugreport.cgi
I also use VisualAge as IDE, and it sounds that VA has also some problems
with Kodo !
Maybe the jar has some problems ? I cannot use Kodo with VA due to this
problem.
2 - I start the schema tool
=====================
When I start the schema tool, I have the following error. and no more
information
Exception in thread "main" java.lang.ExceptionInInitializerError:
javax.jdo.JDOFatalDataStoreException
NestedExceptions:
java.sql.SQLException
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDBCPersistenceManagerFactory.java,Compiled
Code)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetup(PersistenceManagerFactoryImpl.java:496)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:61)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:50)
at
lds.osl.jdo.JDOContextFactory.getCurrentPersistenceManager(JDOContextFactory.java:49)
at lds.ecm.cbo.CBOCode.getInstancesOf(CBOCode.java:56)
at lds.ecm.cbo.CBOCode.getInstancesOf(CBOCode.java:76)
at lds.ecm.cbo.CBOCode.getInstanceOf(CBOCode.java:42)
at lds.ecm.cbo.CBOCurrency.getInstance(CBOCurrency.java:80)
at lds.ecm.cbo.CBOCurrency.getDefaultInstance(CBOCurrency.java:69)
at lds.ecm.instruments.Instrument.<init>(Instrument.java:18)
at lds.ecm.instruments.Instrument.<clinit>(Instrument.java)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java, Compiled Code)
at
com.techtrader.modules.jdo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java,
Compiled Code)
( Can we have direct support from techtrader, I have sent severals mails
without answer )
Please help me for theses problems
Regards
Christophe Demez
LDStesting - please ignore.
<[email protected]> wrote in message
news:[email protected]...
Hello,
I have some strange behaviors with KodoJDO, I use the last version.
1 - Runing error
=============
When I start an application that use Kodo, the VM do the following error ;
A nonfatal internal JIT (3.10.107(x)) error 'Relocation error: NULL
relocation target' has occurred in :
'org/apache/crimson/parser/Parser2.maybeComment (Z)Z': Interpreting
method. Please report this error in detail to
http://java.sun.com/cgi-bin/bugreport.cgi
I also use VisualAge as IDE, and it sounds that VA has also some problems
with Kodo !
Maybe the jar has some problems ? I cannot use Kodo with VA due to this
problem.
2 - I start the schema tool
=====================
When I start the schema tool, I have the following error. and no more
information
Exception in thread "main" java.lang.ExceptionInInitializerError:
javax.jdo.JDOFatalDataStoreException
NestedExceptions:
java.sql.SQLException
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java,Compiled
>
Code)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetu
p(PersistenceManagerFactoryImpl.java:496)
>
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
>
nceManager(PersistenceManagerFactoryImpl.java:61)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:50)
>
at
lds.osl.jdo.JDOContextFactory.getCurrentPersistenceManager(JDOContextFactory
..java:49)
>
at lds.ecm.cbo.CBOCode.getInstancesOf(CBOCode.java:56)
at lds.ecm.cbo.CBOCode.getInstancesOf(CBOCode.java:76)
at lds.ecm.cbo.CBOCode.getInstanceOf(CBOCode.java:42)
at lds.ecm.cbo.CBOCurrency.getInstance(CBOCurrency.java:80)
at lds.ecm.cbo.CBOCurrency.getDefaultInstance(CBOCurrency.java:69)
at lds.ecm.instruments.Instrument.<init>(Instrument.java:18)
at lds.ecm.instruments.Instrument.<clinit>(Instrument.java)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java, Compiled Code)
at
com.techtrader.modules.jdo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java,
>
Compiled Code)
( Can we have direct support from techtrader, I have sent severals mails
without answer )
Please help me for theses problems
Regards
Christophe Demez
LDS -
Initializer exception when running on windows
Hi,
I've recently tried running one of my applications on windows and was
surprised to see that I was unable to create a PersistenceManager due to the
following exception:
Exception in thread "main" java.lang.ExceptionInInitializerError:
javax.jdo.JDOFatalDataStoreException: gnu/regexp/REException
NestedExceptions:
java.sql.SQLException: gnu/regexp/REException
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java:174)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetu
p(PersistenceManagerFactoryImpl.java:496)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:61)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:50)
at com.hcm.tools.jdo.JDOFactory.<clinit>(JDOFactory.java:101)
at com.hcm.security.SecurityHelper.getStocks(SecurityHelper.java:82)
I'm using a JDBC factory with these settings: optimistic true, retainValues
true, nonTransactionalRead true. This program runs correctly when I run it
on Linux. Could this be some kind of CLASSPATH problem with my windows
environment, or is this a problem with Kodo? What does this exception
mean? Thanks for your help.
-EricHi Pat,
The new stack trace looks a lot like the original, but maybe this will give
you a little more info. Here it is:
java.sql.SQLException: gnu/regexp/REException
at
com.techtrader.modules.jdo.impl.jdbc.schema.DB.getPersistentTypes(DB.java:26
2)
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java:170)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetu
p(PersistenceManagerFactoryImpl.java:496)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:61
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:50
at com.hcm.tools.jdo.JDOFactory.<clinit>(JDOFactory.java:102)
at com.hcm.security.SecurityHelper.getStocks(SecurityHelper.java:82)
at com.hcm.security.SecurityHelper.getStock(SecurityHelper.java:108)
at
com.hcm.security.test.SecurityTest.listStock(SecurityTest.java:198)
at com.hcm.security.test.SecurityTest.main(SecurityTest.java:44)
Exception in thread "main" java.lang.ExceptionInInitializerError:
javax.jdo.JDOFatalDataStoreException: gnu/regexp/REException
NestedExceptions:
java.sql.SQLException: gnu/regexp/REException
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java:174)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.privateSetu
p(PersistenceManagerFactoryImpl.java:496)
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:61
at
com.techtrader.modules.jdo.runtime.PersistenceManagerFactoryImpl.getPersiste
nceManager(PersistenceManagerFactoryImpl.java:50
at com.hcm.tools.jdo.JDOFactory.<clinit>(JDOFactory.java:102)
at com.hcm.security.SecurityHelper.getStocks(SecurityHelper.java:82)
at com.hcm.security.SecurityHelper.getStock(SecurityHelper.java:108)
at
com.hcm.security.test.SecurityTest.listStock(SecurityTest.java:198)
at com.hcm.security.test.SecurityTest.main(SecurityTest.java:44)
Thanks,
Eric
"Patrick Linskey" <[email protected]> wrote in message
news:[email protected]...
"Eric Lindauer" <[email protected]> writes:
Exception in thread "main" java.lang.ExceptionInInitializerError:
javax.jdo.JDOFatalDataStoreException: gnu/regexp/REException
NestedExceptions:
java.sql.SQLException: gnu/regexp/REException
at
com.techtrader.modules.jdo.impl.jdbc.JDBCPersistenceManagerFactory.setup(JDB
CPersistenceManagerFactory.java:174)Eric,
Can you provide me with a little more information? In JDOFactory,
please intercept the exception and add the following code:
catch (JDOFatalDataStoreException jfdse)
for (int i = 0; i < jfdse.getNestedExceptions ().length; i++)
jfdse.getNestedExceptions ().printStackTrace ();
throw jfdse;
and post the output. This will print out the full stack trace of the
nested exception.
I suspect that somehow, gnu.regexp.REException or some other
gnu.regexp class made its way into your persistent-types array, either
in the database (if you're using the JDO_SCHEMA_METADATAX table for
persistent type storage) or in your system.prefs. Run 'schematool
-action list' and see if there are any mentions of any gnu.regexp
classes there.
My hunch is based on the fact that we do not use the gnu.regexp
package anywhere in our code.
Additionally, I am sure that you and everyone else will be pleased to
know that we are in the process of auditing our exception-throwing
code to ensure that more detailed and useful messages are thrown in
exceptional circumstances.
-Patrick
Patrick Linskey [email protected]
SolarMetric Inc. http://www.solarmetric.com -
Cannot bind Referenceable in JNDI?
When I try to bind the following Referenceable object to the JNDI tree in
WL 6.0 SP2, I get the following exception:
public class Foo
implements javax.naming.Referenceable
public javax.naming.Reference getReference ()
// just a test
return new javax.naming.Reference (Foo.class.getName ());
javax.naming.ConfigurationException. Root exception is java.rmi.MarshalException:
failed to marshal public abstract void
weblogic.jndi.internal.NamingNode.bind(
java.lang.String,java.lang.Object,java.util.Hashtable)
throws javax.naming.NamingException,java.rmi.RemoteException; nested exception is:
java.io.NotSerializableException: com.techtrader.modules.jdo.impl.jdbc.Foo
java.io.NotSerializableException: com.techtrader.modules.jdo.impl.jdbc.Foo
at java.lang.Throwable.<init>(Throwable.java:96)
at java.lang.Exception.<init>(Exception.java:44)
at java.io.IOException.<init>(IOException.java:49)
at java.io.ObjectStreamException.<init>(ObjectStreamException.java:31)
at java.io.NotSerializableException.<init>(NotSerializableException.java:35)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1161)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:372)
at weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:102)
at weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:108)
at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:19)
at weblogic.rmi.internal.BasicRemoteRef.marshalArgs(BasicRemoteRef.java:121)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:246)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:225)
at weblogic.jndi.internal.ServerNamingNode_WLStub.bind(ServerNamingNode_WLStub.java:436)
at weblogic.jndi.internal.WLContextImpl.bind(WLContextImpl.java:337)
at javax.naming.InitialContext.bind(InitialContext.java:359)
at com.techtrader.modules.jdo.impl.jdbc.JNDIJDOFactory.<init>(JNDIJDOFactory.java:36)
at com.techtrader.modules.jdo.impl.jdbc.JNDIJDOFactory.main(JNDIJDOFactory.java:77)
Why can't I bind a referenceable object?
-MarcYour class Foo needs to implement java.io.Serializable interface.
Shiva.
Marc Prud'hommeaux wrote:
When I try to bind the following Referenceable object to the JNDI tree in
WL 6.0 SP2, I get the following exception:
public class Foo
implements javax.naming.Referenceable
public javax.naming.Reference getReference ()
// just a test
return new javax.naming.Reference (Foo.class.getName ());
javax.naming.ConfigurationException. Root exception is java.rmi.MarshalException:
failed to marshal public abstract void
weblogic.jndi.internal.NamingNode.bind(
java.lang.String,java.lang.Object,java.util.Hashtable)
throws javax.naming.NamingException,java.rmi.RemoteException; nested exception is:
java.io.NotSerializableException: com.techtrader.modules.jdo.impl.jdbc.Foo
java.io.NotSerializableException: com.techtrader.modules.jdo.impl.jdbc.Foo
at java.lang.Throwable.<init>(Throwable.java:96)
at java.lang.Exception.<init>(Exception.java:44)
at java.io.IOException.<init>(IOException.java:49)
at java.io.ObjectStreamException.<init>(ObjectStreamException.java:31)
at java.io.NotSerializableException.<init>(NotSerializableException.java:35)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1161)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:372)
at weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:102)
at weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:108)
at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:19)
at weblogic.rmi.internal.BasicRemoteRef.marshalArgs(BasicRemoteRef.java:121)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:246)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:225)
at weblogic.jndi.internal.ServerNamingNode_WLStub.bind(ServerNamingNode_WLStub.java:436)
at weblogic.jndi.internal.WLContextImpl.bind(WLContextImpl.java:337)
at javax.naming.InitialContext.bind(InitialContext.java:359)
at com.techtrader.modules.jdo.impl.jdbc.JNDIJDOFactory.<init>(JNDIJDOFactory.java:36)
at com.techtrader.modules.jdo.impl.jdbc.JNDIJDOFactory.main(JNDIJDOFactory.java:77)
Why can't I bind a referenceable object?
-Marc -
I have noticed that there is open bug (211) that refers to 2 phase commit
and I just curious what the exact problem is.
Does that imply that the current version (2.4) does not allow 2 phase
commit?
Let's say I need to integrate JDO into global transaction (managed by App
server) and I may need during that transaction update multiple databases.
It could be implemented via JDO (multiple PMFs) or it could be a
combination of JDO and JDBC/EJB happening during the same transaction.
Am I likely to hit a problem if I do that?
Thank you,
PetrPetr-
In article <avflf9$ccu$[email protected]>, Petr Bulanek wrote:
Hi Marc,
Well, what does it really mean that \'Kodo will not respect the
semantics of the 2-phase-commit protocol\'?Are you saying that Kodo may commit my changes even if the other datastore
decides to roll the transaction back at the last moment?
That if Kodo has difficulties to commit, it would not roolback the global
transaction and as a result the other datastores will commit?You are correct: we currently do not do anything special for 2 phase
commit at all.
I mean, this is quite important and would like to know exactly what to
expect so I can work around it.
Thank you,
Petr
P.S.
I \'think\' I saw the plan to fix this in 2.5.x. What is the planned
release date?It is in the milestone for 2.5. We can't make any committments on its
release date, but it will hopefully be out within 2 months.
Marc Prud\'hommeaux wrote:
Petr-
You can integrate Kodo\'s JDO transactions into the Application Server\'s
global transaction (which might also commit multiple other
transactions). The only issue is that Kodo will not respect the
semantics of the 2-phase-commit protocol.
We expect to have this issue resolved soon.
In article <avdri3$f2o$[email protected]>, Petr Bulanek wrote:
I have noticed that there is open bug (211) that refers to 2 phase commit
and I just curious what the exact problem is.
Does that imply that the current version (2.4) does not allow 2 phase
commit?
Let\'s say I need to integrate JDO into global transaction (managed by App
server) and I may need during that transaction update multiple databases.
It could be implemented via JDO (multiple PMFs) or it could be a
combination of JDO and JDBC/EJB happening during the same transaction.
Am I likely to hit a problem if I do that?
Thank you,
Petr
Marc Prud\'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com
Marc Prud'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com
Maybe you are looking for
-
Calling different Applications w/o having to enter login info again.How ?
Hello, we have created several apex applications that are in different workspaces. Each application has it's own custom authentication process and a login form. Now we want to have a central login form, from which user can login and be able to visit
-
Usb to Ethernet adapter doesn't work? AX88772B
I don't know how to make a connection with Internet with RJ-45 cable with the usb adapter. I have MBA. Lion 10.7.5 Now I need to connect MBA by RJ-45 cable with usb adapter (asus AX88772B) MBA see the adapter (even without an ethernet cable). I also
-
Working in Sql, not working in Stored procedure
Dear friends, I am puzzled about this strange working of Oracle , although I know that there is some problem with my code. I paste my code here. The delete statement is working properly in SQL Plus 8.0, but it is not working when I call this stored p
-
Asset master data synchronization with HR Master data
Dear Experts: I am FI consultant and i am doing Research on Synchronization of asset master data with HR master data. Our management wants that if company gives any thing which is regarded as an asset e.g Laptop, expensive tools
-
Hi all, i have this problem. there is a process that lock a table to execute many operation. I need to check if these operation are correct during the time that the table is locked. Its possible connect to the database and execute a select during the