Hi Wes,
I think the most important part is
Caused by: java.lang.NullPointerException
at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java
:1194)
at
org.apache.ojb.broker.metadata.RepositoryPersistor.readMetadataFromXML(U
nknown Source)
at
org.apache.ojb.broker.metadata.RepositoryPersistor.buildRepository(Unkno
wn Source)
at
org.apache.ojb.broker.metadata.RepositoryPersistor.readDescriptorReposit
ory(Unknown Source)
... 44 more
Caused by: java.lang.NullPointerException
at
org.apache.ojb.broker.metadata.fieldaccess.AnonymousPersistentFieldHelpe
r.computeInheritedPersistentFields(Unknown Source)
at
org.apache.ojb.broker.metadata.RepositoryXmlHandler.endDocument(Unknown
Source)
at
org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParseIt was caused by a NPE when AnonymousPersistentFieldHelper search for anonymous fields. Could you compile OJB with "debug" information enabled, so that we can see the line of the NPE.
You can build the jar with a 'ant jar-debug' call (instead 'ant jar') on the OJB source distribution.
Did behavior change when you remove the table name entry in
<class-descriptor
class="model.PayrollDeductionPlan"
table="dexa810t"
>
<extent-class class-ref="model.ClientPayrollDeductionPlan" />
</class-descriptor>think an abstract class hasn't a table in DB.
Is model.AdmObject an interface you will work on OJB level, e.g. "give me all AdmObjects" or is it a base class all other objects inherit from?
regards, Armin
Lemke, Wesley wrote:
I did just notice that the stack trace says: Caused by: org.apache.ojb.broker.metadata.MetadataException: Can't read repository file 'repository.xml'
Here is my entire repository.xml file. It seems ok to me....
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is a sample metadata repository for the Apache ObJectRelationalBridge (OJB) System.
Use this file as a template for building your own mappings.
-->
<!-- doctype definition
By default we are using a local DTD that is expected to reside
in the same directory as this repository.xml file.
If you intend to validate your repository.xml against
the public dtd at the Apache site, please replace the string
"repository.dtd" by the public adress
"http://db.apache.org/ojb/dtds/1.0/repository.dtd".
In this case validation will only work if the machine you
run your application on can connect to the internet! -->
<!DOCTYPE descriptor-repository PUBLIC
"-//Apache Software Foundation//DTD OJB Repository//EN"
"repository.dtd"
[
<!ENTITY database SYSTEM "repository_database.xml">
<!ENTITY internal SYSTEM "repository_internal.xml">
<!ENTITY user SYSTEM "repository_user.xml">
]>
<descriptor-repository version="1.0" isolation-level="read-uncommitted">
<!-- include all used database connections --> <jdbc-connection-descriptor jcd-alias="mysqlDS" default-connection="false" platform="MySQL" jdbc-level="1.0" jndi-datasource-name="jdbc/ao79" batch-mode="false" > <sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerNativeImpl "> <attribute attribute-name="autoNaming" attribute-value="true"/> </sequence-manager> </jdbc-connection-descriptor>
<class-descriptor class="model.AdmObject"> <extent-class class-ref="model.PayrollDeductionPlan" /> </class-descriptor>
<class-descriptor class="model.PayrollDeductionPlan"> <extent-class class-ref="model.ClientPayrollDeductionPlan" /> </class-descriptor>
<class-descriptor class="model.ClientPayrollDeductionPlan" table="dexa820t" > <field-descriptor name="objectId" column="B_ID" jdbc-type="INTEGER" primarykey="true" autoincrement="true" /> <field-descriptor name="clientInfo" column="client_info" jdbc-type="VARCHAR" />
<field-descriptor
name="payrollDeductionId"
column="parent_id"
jdbc-type="INTEGER"
access="anonymous"
/>
<field-descriptor
name="idOfLastUserToUpdate"
column="update_user"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="idOfUserThatCreated"
column="created_user"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="objectStatus"
column="object_status"
jdbc-type="VARCHAR"
/> <reference-descriptor name="super"
class-ref="model.PayrollDeductionPlan"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
>
<foreignkey field-ref="payrollDeductionId"/>
</reference-descriptor>
<collection-descriptor
name="payPlanAssociations"
element-class-ref="model.PayPlanAssociation"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
>
<inverse-foreignkey field-ref="payPlanFK"/> </collection-descriptor> </class-descriptor>
<class-descriptor class="model.PayPlanAssociation" table="dexa830t" > <field-descriptor name="id" column="D_ID" jdbc-type="INTEGER" primarykey="true" autoincrement="true" /> <field-descriptor name="payPlanFK" column="a_id" jdbc-type="INTEGER" /> <reference-descriptor name="payrollDeductionPlan" class-ref="model.PayrollDeductionPlan" auto-retrieve="true" auto-update="true" auto-delete="true" > <foreignkey field-ref="payPlanFK"/> </reference-descriptor> </class-descriptor>
</descriptor-repository>
-----Original Message-----
From: Lemke, Wesley [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 15, 2005 8:26 AM
To: [email protected]
Subject: Abstract Parent Class
I am getting a really strange error when trying to change one of our classes to an abstract class. Here is our original mapping file:
<!-- All of our persistent objects extend this class --> <class-descriptor class="model.AdmObject"> <extent-class class-ref="model.PayrollDeductionPlan" /> </class-descriptor>
<class-descriptor class="model.PayrollDeductionPlan" table="dexa810t" > <!-- field-descriptors removed for the sake of brevity --> </class-descriptor>
<!-- this class extends PayrollDeductionPlan --> <class-descriptor class="model.ClientPayrollDeductionPlan" table="dexa820t" > <!-- field-descriptors removed for the sake of brevity --> </class-descriptor>
My code works perfectly when it is like that, however, we want to make PayrollDeductionPlan an abstract class, so I changed the mapping file to be like this:
<class-descriptor class="model.AdmObject"> <extent-class class-ref="model.PayrollDeductionPlan" /> </class-descriptor>
<class-descriptor class="model.PayrollDeductionPlan" table="dexa810t" > <extent-class class-ref="model.ClientPayrollDeductionPlan" /> </class-descriptor>
I also moved the field-descriptors from PayrollDeductionPlan to ClientPayrollDeductionPlan, and declared the PayrollDeductionPlan as abstract in the java code. When I run my code like this I get the following error:
Error 500: Server caught unhandled exception from servlet
[servlets.InheritanceServlet]: Borrow broker from pool failed, using
PBKey org.apache.ojb.broker.PBKey: jcdAlias=mysqlDS, user=VKDB2T2,
password=*****
I'm assuming that there is something else going on, the changes above should not affect the database connection. Here is the entire stacktrace (The "INFO: # finalize DescriptorRepository instance #" does not show up when PayrollDeductionPlan is not abstract):
[3/15/05 8:22:26:101 CST] 4cab288f SystemOut O [DEFAULT] INFO: # finalize DescriptorRepository instance # [3/15/05 8:22:27:493 CST] 39ad2883 WebGroup E SRVE0026E: [Servlet Error]-[servlets.InheritanceServlet]: org.apache.ojb.broker.PBFactoryException: Borrow broker from pool failed, using PBKey org.apache.ojb.broker.PBKey: jcdAlias=mysqlDS, user=VKDB2T2, password=***** at org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.createPer sistenceBroker(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.createPersis tenceBroker(Unknown Source) at org.apache.ojb.broker.PersistenceBrokerFactory.createPersistenceBroker(U nknown Source) at servlets.InheritanceServlet.doPost(InheritanceServlet.java:51) at servlets.InheritanceServlet.doGet(InheritanceServlet.java:40) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe rvletInstance.java:110) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi fecycleServlet.java:174) at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle Servlet.java:313) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif ecycleServlet.java:116) at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance. java:283) at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali dServletReferenceState.java:42) at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle tInstanceReference.java:40) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa tch(WebAppRequestDispatcher.java:948) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe questDispatcher.java:530) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq uestDispatcher.java:176) at com.ibm.ws.webcontainer.servlet.InvokerServlet.service(InvokerServlet.ja va:255) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe rvletInstance.java:110) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi fecycleServlet.java:174) at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle Servlet.java:313) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif ecycleServlet.java:116) at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance. java:283) at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali dServletReferenceState.java:42) at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle tInstanceReference.java:40) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa tch(WebAppRequestDispatcher.java:948) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe questDispatcher.java:530) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq uestDispatcher.java:176) at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:7 9) at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInv oker.java:201) at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocati on(CachedInvocation.java:71) at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(Servle tRequestProcessor.java:182) at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSELis tener.java:334) at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection .java:56) at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java: 610) at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593) Caused by: org.apache.ojb.broker.metadata.MetadataException: Can't read repository file 'repository.xml' at org.apache.ojb.broker.metadata.MetadataManager.init(Unknown Source) at org.apache.ojb.broker.metadata.MetadataManager.<init>(Unknown Source) at org.apache.ojb.broker.metadata.MetadataManager.getInstance(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.createNewBro kerInstance(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl$PBKeyedPo olableObjectFactory.makeObject(Unknown Source) at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(Generic KeyedObjectPool.java:747) ... 38 more Caused by: java.lang.NullPointerException at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java :1194) at org.apache.ojb.broker.metadata.RepositoryPersistor.readMetadataFromXML(U nknown Source) at org.apache.ojb.broker.metadata.RepositoryPersistor.buildRepository(Unkno wn Source) at org.apache.ojb.broker.metadata.RepositoryPersistor.readDescriptorReposit ory(Unknown Source) ... 44 more Caused by: java.lang.NullPointerException at org.apache.ojb.broker.metadata.fieldaccess.AnonymousPersistentFieldHelpe r.computeInheritedPersistentFields(Unknown Source) at org.apache.ojb.broker.metadata.RepositoryXmlHandler.endDocument(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParse r.java:725) at org.apache.xerces.impl.XMLNamespaceBinder.endDocument(XMLNamespaceBinder .java:704) at org.apache.xerces.impl.dtd.XMLDTDValidator.endDocument(XMLDTDValidator.j ava:998) at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScann erImpl.java:455) at org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java: 1288) at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load(XMLEntityMana ger.java(Compiled Code)) at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces(XMLEnti tyManager.java(Compiled Code)) at org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dis patch(XMLDocumentScannerImpl.java:1011) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDo cumentFragmentScannerImpl.java:333) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardPars erConfiguration.java:525) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardPars erConfiguration.java:581) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java :1158) ... 47 more
Anyone have any ideas on what the problem could be?
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
