I am implementing a soap service to access some data
maintained by another servlet within tomcat. OJB is configured into
that servlet and works fine.
I am trying to add ojb into my soap service - so this is all happening within
the axis servlet.
I have placed the OJB.properties file in the classes directory for axis,
I have placed the ojb jar in the tomcat lib directory.
within my soap handler I have this:
--------
public static String makeKey(Document doc) {
System.out.println ("Making key: ");
PersistenceBroker broker = null;
try {
System.out.println ("Making broker: ");
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
System.out.println ("Making sm: ");
//SequenceManager sm = broker.serviceSequenceManager();
System.out.println ("Making class desc: ");
//ClassDescriptor classDescriptor =
broker.getDescriptorRepository().getDescriptorFor("org.osuosl.ockham.registry.metadata.OckhamRecord");
System.out.println ("Making field desc: ");
//FieldDescriptor fieldDescriptor =
classDescriptor.getFieldDescriptorByName("localIdentifier");
//String key = (String) sm.getUniqueValue(fieldDescriptor);
}
catch (org.apache.ojb.broker.PBFactoryException ex) {
System.out.println ("Exception: " + ex.getMessage ());
}
catch
(org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException ex) {
System.out.println ("Not persistent exception: " +
ex.getMessage ());
}
catch (java.lang.Exception ex) {
System.out.println ("Exception: " + ex.getMessage ());
}
finally
{
System.out.println ("Finally: ");
if (broker != null) broker.close();
}
from my soap invocation, I arrive at the defaultPersistenceBroker()
and then only get back this from my soap call -
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:libdev
java.lang.reflect.InvocationTargetException
at
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at
org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at
gov.loc.www.zing.srw.update.soap_binding.SOAPBindingStub.update(SOAPBindingStub.java:441)
at ReadClient.main(ReadClient.java:102)
I suppose that the persistence broker is failing but I don't know how.
How can I get some traces out of it?
How can I get some insight into its operation, and what is failing?
I have also been unable to get log4.properties to take effect. I don't know
whether this
should be placed in the tomcat classes directory, or the axis/classes
directory, or both.
I have tried both.
Thanks,
Rick Silterra