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(AbstractSAXParse

It 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]



Reply via email to