Hello I successfully have OJB 0.9.9 working in a web app and am trying to get OJB 1.0rc3 working correctly in a standalone app I am developing. When trying to persist a simple object all that is returned in the log is this :
[org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO: Destroy object was called, try to close connection: [EMAIL PROTECTED] Any help would be appreciated. No exceptions are being thrown so I really don't know where to start looking. :( My database is mysql Ver 12.20 Distrib 4.0.13, for pc-linux (i686) TIA, Chuck Grohowski repository.xml: <?xml version="1.0" encoding="UTF-8"?> <!-- This is a sample metadata repository for the ObJectBridge System. Use this file as a template for building your own mappings--> <!-- defining entities for include-files --> <!DOCTYPE descriptor-repository SYSTEM "repository.dtd" [ <!ENTITY user SYSTEM "repository_user.xml"> <!ENTITY internal SYSTEM "repository_internal.xml"> ]> <descriptor-repository version="1.0" isolation-level="read-uncommitted"> <!-- The Default JDBC Connection. If a class-descriptor does not specify its own JDBC Connection, the Connection specified here will be used. --> <jdbc-connection-descriptor jcd-alias="mysql" default-connection="true" platform="MySQL" jdbc-level="3.0" driver="org.gjt.mm.mysql.Driver" protocol="jdbc" subprotocol="mysql" dbalias="//127.0.0.1/wolfbot" username="wolfbot" password="xxxx" eager-release="true" batch-mode="true" useAutoCommit="2" ignoreAutoCommitExceptions="true"> <connection-pool maxActive="10" maxIdle="2" maxWait="3" minEvictableIdleTimeMillis="4" numTestsPerEvictionRun="5" testOnBorrow="true" testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="6" whenExhaustedAction="2" validationQuery="select * from test limit 0,1" logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="8" /> <sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerMySQLImpl"/> </jdbc-connection-descriptor> <!-- include user defined mappings here --> &user; <!-- include ojb internal mappings here --> &internal; </descriptor-repository> repository_user.xml: <class-descriptor class="Kills" table="kills"> <field-descriptor name="id" column="id" jdbc-type="INTEGER" nullable="false" primarykey="true" autoincrement="true"/> <field-descriptor name="prawner" column="prawner" jdbc-type="INTEGER" nullable="false"/> <field-descriptor name="prawned" column="prawned" jdbc-type="INTEGER" nullable="false"/> <field-descriptor name="deathBy" column="death_by" jdbc-type="INTEGER" nullable="false"/> <field-descriptor name="timeOfDeath" column="time_of_death" jdbc-type="TIME" nullable="false"/> </class-descriptor> offending code: public static void recordKill( Kills k ) { PersistenceBroker broker = null; try { broker = PersistenceBrokerFactory.defaultPersistenceBroker(); broker.beginTransaction(); broker.store( k ); broker.commitTransaction(); } catch( PBFactoryException pbe ) { broker.abortTransaction(); pbe.printStackTrace(); } catch( Exception e ) { broker.abortTransaction(); e.printStackTrace(); } finally { if( broker != null ) { broker.close(); } } } OJB.properties: # OJB.properties -- configuration of the OJB runtime environment # Version: 1.0 # (c) 2001, 2002, 2003 Apache Software Foundation # Author: Thomas Mahler and many others # #--------------------------------------------------------------------------- ------------- # repository file settings #--------------------------------------------------------------------------- ------------- # The repositoryFile entry tells OJB to use this file as as its standard mapping # repository. The file is looked up from the classpath. # repositoryFile=repository.xml # # If the useSerializedRepository entry is set to true, OJB tries to load a # serialized version of the repository for performance reasons. # if set to false, OJB always loads the xml file. # Setting this flag to true will accelerate the startup sequence of OJB. # If set to true changes to the repository.xml file will only be detected # after maually deleting the repository.xml.serialized file. useSerializedRepository=false # # If Repository serialization is used the entry serializedRepositoryPath defines the # directory where the Repository is written to and read from. # this entry is used only when the useSerializedRepository flag is set to true # serializedRepositoryPath=. # #--------------------------------------------------------------------------- ------------- # PersistenceBrokerFactory / PersistenceBroker #--------------------------------------------------------------------------- ------------- # The PersistenceBrokerFactoryClass entry decides which concrete # PersistenceBrokerFactory implemention is to be used. PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFa ctoryDefaultImpl # # The PersistenceBrokerClass entry decides which concrete PersistenceBroker # implementation is to be served by the PersistenceBrokerFactory. # This is the singlevm implementation: PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl # # #--------------------------------------------------------------------------- ------------- # PersistenceBrokerFactory pool #--------------------------------------------------------------------------- ------------- # PersistenceBroker pool configuration # This pool uses the jakarta-commons-pool api. # There you can find things described in detail. # # maximum number of brokers that can be borrowed from the # pool at one time. When non-positive, there is no limit. maxActive=100 # # controls the maximum number of brokers that can sit idle in the # pool (per key) at any time. When non-positive, there is no limit maxIdle=-1 # # max time block to get broker instance from pool, after that exception is thrown. # When non-positive, block till last judgement maxWait=2000 # # indicates how long the eviction thread should sleep before "runs" of examining # idle objects. When non-positive, no eviction thread will be launched. timeBetweenEvictionRunsMillis=-1 # # specifies the minimum amount of time that an broker may sit idle # in the pool before it is eligable for eviction due to idle time. # When non-positive, no object will be dropped from the pool due # to idle time alone (depends on timeBetweenEvictionRunsMillis > 0) minEvictableIdleTimeMillis=1000000 # # specifies the behaviour of the pool when broker capacity is # exhausted (see maxActive above) # 0 - fail # 1 - block # 2 - grow whenExhaustedAction=0 # # #--------------------------------------------------------------------------- ------------- # ConnectionFactory / Default ConnectionPool #--------------------------------------------------------------------------- ------------- # The ConnectionFactoryClass entry determines which kind of ConnectionFactory # is to be used within org.apache.ojb as connection factory. # A ConnectionFactory is responsible for creating # JDBC Connections. Current version ships four implementations: # # 1. ConnectionFactoryNotPooledImpl # No pooling, no playing around. # Every connection request returns a new connection, # every connection release close the connection. # 2. ConnectionFactoryPooledImpl # This implementation supports connection pooling. # 3. ConnectionFactoryDBCPImpl # Using the jakarta-DBCP api for connection management, support # connection- and prepared statement-pooling, abandoned connection handling. # 4. ConnectionFactoryManagedImpl # Connection factory for use within managed environments - e.g. JBoss. # Every obtained DataSource was wrapped within OJB (and ignore # e.g. con.commit() calls within OJB). # Use this implementation e.g if you use Datasources from an application server. # # Use the OJB performance tests to decide, which implementation is best for you. # The proper way of obtaining a connection is configured in # JDBCConnectionDescriptor entries in the repository.xml file. # If want a more fine grained control of each connection pool used by OJB, # take a look at the repository.dtd, there was a possibility to override # this default connection factory entry in each JDBCConnectionDescriptor. # ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryPo oledImpl #ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryN otPooledImpl #ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryM anagedImpl #ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryD BCPImpl # # #--------------------------------------------------------------------------- ------------- # ConnectionManager #--------------------------------------------------------------------------- ------------- # The ConnectionManagerClass entry defines the ConnectionManager implemementation to be used ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerIm pl # # #--------------------------------------------------------------------------- ------------- # SqlGenerator #--------------------------------------------------------------------------- ------------- # The SqlGeneratorClass entry defines the SqlGenerator implemementation to be used SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultI mpl # # #--------------------------------------------------------------------------- ------------- # CollectionProxy class #--------------------------------------------------------------------------- ------------- # The optional CollectionProxy entry defines the class to be used for CollectionProxies # if this entry is null org.apache.ojb.broker.accesslayer.ListProxy is used for Lists # and org.apache.ojb.broker.accesslayer.CollectionProxy for Collections # #CollectionProxyClass= # #--------------------------------------------------------------------------- ------------- # StatementManager #--------------------------------------------------------------------------- ------------- # The StatementManagerClass entry defines the StatementManager implemementation to be used StatementManagerClass=org.apache.ojb.broker.accesslayer.StatementManager # # #--------------------------------------------------------------------------- ------------- # JdbcAccess #--------------------------------------------------------------------------- ------------- # The JdbcAccessClass entry defines the JdbcAccess implemementation to be used JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl # # #--------------------------------------------------------------------------- ------------- # Object cache #--------------------------------------------------------------------------- ------------- # The ObjectCacheClass entry tells OJB which concrete instance Cache # implementation is to be used. ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheDefaultImpl #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheEmptyImpl #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCachePerBrokerImpl #ObjectCacheClass=org.apache.ojb.broker.cache.MetaObjectCacheJCSImpl #ObjectCacheClass=org.apache.ojb.broker.cache.MetaObjectCachePerClassImpl # # # Use CacheFilters to do filter operations before caching methods were # called. Build your own filter class by implementing org.apache.ojb.cache.CacheFilter. # It is possible to use a arbitrary number of CacheFilters, but this slows # down the performance of the cache, thus handle with care. # # - org.apache.ojb.broker.cache.CacheFilterClassImpl # allows filtering of classes # - org.apache.ojb.broker.cache.CacheFilterPackageImpl # allows filtering of packages # More info see Javadoc of the according classes. # Set a comma separated list of CacheFilter. #ObjectCacheFilter=org.apache.ojb.broker.cache.CacheFilterClassImpl,org.apac he.ojb.broker.cache.CacheFilterPackageImpl # #--------------------------------------------------------------------------- ------------- # Locking #--------------------------------------------------------------------------- ------------- # The LockManagerClass entry tells OJB which concrete LockManager # implementation is to be used. LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl # # The LockMapClass entry tells OJB which concrete LockMap # implementation is to be used. # If OJB is running on multiple concurrent clients it is recommended # to use the PersistentLockMapImpl. It guarantees to provide # Lockamanagement across multiple JVMs. # If OJB is running in a single JVM (e.g. in a desktop app, or in a servlet # engine) it is save to use the InMemoryLockMapImpl. Using it will result # in a large performance gain. # LockMapClass=org.apache.ojb.odmg.locking.PersistentLockMapImpl LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl # # The LockTimeout entry defines the maximum time in milliseconds # that a lock may be hold. Defaults to 60000 = 1 minute LockTimeout=60000 # # The ImplicitLocking entry defines if implicit lock acquisition is # to be used. If set to true OJB implicitely locks objects to ODMG # transactions after performing OQL queries. # If implicit locking is used locking objects is recursive, that is # associated objects are also locked. # If ImplicitLocking is set to false, no locks are obtained in OQL # queries and there is also no recursive locking. ImplicitLocking=true #ImplicitLocking=false # # The LockAssociations entry defines the behaviour for the OJB # implicit locking feature. If set to WRITE (default) acquiring a write- # lock on a given object x implies write locks on all objects associated # to x. If set to READ implicit read-locks are acquired. # Acquiring a read-lock on x thus allways results in implicit read-locks # on all associated objects. #LockAssociations=READ LockAssociations=WRITE # # #--------------------------------------------------------------------------- ------------- # Logging #--------------------------------------------------------------------------- ------------- # The LoggerClass entry tells OJB which concrete Logger # implementation is to be used. # # Commons-logging #LoggerClass=org.apache.ojb.broker.util.logging.CommonsLoggerImpl # log4j based logging #LoggerClass=org.apache.ojb.broker.util.logging.Log4jLoggerImpl # OJB's own simple looging support LoggerClass=org.apache.ojb.broker.util.logging.PoorMansLoggerImpl LoggerConfigFile=log4j.properties # # The LogLevel entries tells OJB which LogLevels are active # for the different loggers used within OJB # Loglevels: DEBUG < INFO < WARN < ERROR < FATAL # That is loglevel WARN won't log DEBUG and INFO messages, # but will log WARN, ERROR, and FATAL messages # # The Default Logger DEFAULT.LogLevel=DEBUG org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl=DEBUG # Logger for PersistenceBrokerImpl class org.apache.ojb.broker.core.PersistenceBrokerImpl.LogLevel=DEBUG # Logger for PersistenceBrokerFactory class org.apache.ojb.broker.PersistenceBrokerFactory.LogLevel=DEBUG # Logger for RepositoryXmlHandler, useful for debugging parsing of repository.xml! org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=DEBUG # Logger for JdbcAccess, useful for debugging JDBC related problems org.apache.ojb.broker.accesslayer.JdbcAccess.LogLevel=DEBUG # Logger for RsIterator, useful for debugging problems with Object materialization org.apache.ojb.broker.accesslayer.RsIterator.LogLevel=DEBUG # Logger for StatementsForClass, useful for debugging JDBC Connection related problems org.apache.ojb.broker.accesslayer.StatementsForClass.LogLevel=DEBUG # Logger for SqlGenerator, useful for debugging generation of SQL org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG # Logger for RepositoryPersistor org.apache.ojb.broker.metadata.RepositoryPersistor.LogLevel=DEBUG # Logger for PersistenceBrokerFactoryDefaultImpl org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=WARN # Logger for the ODMG Implementation ODMG.LogLevel=DEBUG # Logger for the JDO RI Implementation JDO.LogLevel=DEBUG # Logger for the performance tests performance.LogLevel=DEBUG # Logger for the soda api soda.LogLevel=DEBUG # Logger for the factory service ConfigurableFactory.LogLevel=DEBUG # # #--------------------------------------------------------------------------- ------------- # OQL / SQL settings #--------------------------------------------------------------------------- ------------- # The OqlCollectionClass entry defines the collection type returned # from OQL queries. By default this value is set to DListImpl. # This will be good for most situations as DList allows maximum flexibility # in a ODMG environment. # Using DLists for large resultsets may be bad for application performance. # For these scenarios you can use ArrayLists or Vectors. # Important note: the collections class to be used MUST implement the # interface org.apache.ojb.broker.ManageableCollection. # OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl # OqlCollectionClass=org.apache.ojb.broker.util.collections.ManageableArrayLis t # OqlCollectionClass=org.apache.ojb.broker.util.ManageableVector # # The SqlInLimit entry limits the number of values in IN-sql statement, # -1 for no limits. This hint is used in Criteria. SqlInLimit=200 # # #--------------------------------------------------------------------------- ------------- # Meta data / mapping settings #--------------------------------------------------------------------------- ------------- # The PersistentFieldClass property defines the implementation class # for PersistentField attributes used in the OJB MetaData layer. # By default a attribute based Version using Reflection is selected. # using this Class persistent attributes don't need getters and setters # and don't have to be declared public or protected. # PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFi eldDefaultImpl # # There is also a high-speed version of this access strategy avalaible. # The PersistentFieldMaxPerformanceImpl does not cooperate with # an AccessController, but accesses the fields directly. #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF ieldMaxPerformanceImpl # # The PersistentFieldPropertyImpl uses JavaBeans comformant calls only # to access persistent attributes. No Reflection is needed. # But for each attribute xxx there must be public getXxx() and setXxx() methods. # #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF ieldPropertyImpl # # #--------------------------------------------------------------------------- ------------- # Component Intercepting for Profiling and Tracing #--------------------------------------------------------------------------- ------------- # By enabling an InterceptorClass all OJB components will use # this Interceptor. Interceptors allow advanced tracing and Profiling # of all component method calls. # This is currently an experimental feature useful only for OJB kernel developers. # #InterceptorClass=org.apache.ojb.broker.util.interceptor.TracingInterceptor # #--------------------------------------------------------------------------- ------------- # Transaction Management and assocation #--------------------------------------------------------------------------- ------------- # Use the LocalTxManager if you want the transaction to be associated by a thread OJBTxManagerClass=org.apache.ojb.odmg.LocalTxManager # Use the JTATxManager if you want the transaction to be associated via the Transaction # manager that is in your application server. #OJBTxManagerClass=org.apache.ojb.odmg.JTATxManager # # The TransactionManager is acquired in different ways dependent on the application server. # The JTATransactionManagerClass property allows you to specify the class that implements # the proper behaviour for finding the transaction manager. Only use when OJBTxManagerClass # is set to a factory that uses the application server transaction manager # (org.apache.ojb.odmg.JTATxManager) # # JBoss Transaction Manager Factory JTATransactionManagerClass=org.apache.ojb.odmg.transaction.JBossTransactionM anagerFactory # Weblogic Transaction Manager Factory #JTATransactionManagerClass=org.apache.ojb.odmg.transaction.WeblogicTransact ionManagerFactory # WebSphere transaction manager factory #JTATransactionManagerClass=org.apache.ojb.odmg.transaction.WebSphereTransac tionManagerFactory # Orion transaction manager factory #JTATransactionManagerClass=org.apache.ojb.odmg.transaction.OrionTransaction ManagerFactory # #--------------------------------------------------------------------------- ------------- # End of OJB.properties file #--------------------------------------------------------------------------- ------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]