<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
        <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
        <TITLE>Re: [jdom-interest] Issues with b7</TITLE>
        <META NAME="GENERATOR" CONTENT="StarOffice/5.2 (Win32)">
        <META NAME="CREATED" CONTENT="20010707;11371427">
        <META NAME="CHANGEDBY" CONTENT="Erik Nord">
        <META NAME="CHANGED" CONTENT="20010707;11384298">
</HEAD>
<BODY>
<PRE>Inside the *_BaseStub object there is a method matching the method that
you are calling. In my case it is execute that takes in an Element.
It is a w3c Element. Then half way down is the following line of code:
in=(org.omg.CORBA_2_3.portable.InputStream)_invoke(out); Inside this
_invoke(out) call a system exception is thrown. Here is a copy of the
method that I am trying to eventually make it into:
public org.w3c.dom.Element execute(org.w3c.dom.Element element) {
try {
System.out.println("Inside execute()");
org.jdom.input.DOMBuilder build = new
org.jdom.input.DOMBuilder();
org.jdom.Element jElement = build.build(element);
org.jdom.Document jdom = new org.jdom.Document(jElement);
org.jdom.output.DOMOutputter out = new
org.jdom.output.DOMOutputter();
jElement = jdom.getRootElement();
System.out.println("Leaving execute()");
return out.output(jElement);
} catch (org.jdom.JDOMException jodme) {
jodme.printStackTrace();
return null;
}
}
As you can see I am really doing nothing in this method as of yet.
There will eventually be some business logic added to this method.
Here is a copy of the Unit Test program that I wrote to test this
method:
protected void handleDo() {
try {
System.out.println("handleDo()");
java.util.Properties p = new java.util.Properties();
p.put(javax.naming.Context.PROVIDER_URL, "iiop:///");
p.put(
javax.naming.Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.ejs.ns.jndi.CNInitialContextFactory");
javax.naming.InitialContext init = new
javax.naming.InitialContext(p);
String jndiName =
csg.dispatcher.ejb.DispatcherSFB.class.getName().replace('.', '/');
Object o = init.lookup(jndiName);
System.out.println("Obtaining DispatcherSFB object.");
csg.dispatcher.ejb.DispatcherSFBHome dispatcherHome =
(csg.dispatcher.ejb.DispatcherSFBHome)
javax.rmi.PortableRemoteObject.narrow(
o,
csg.dispatcher.ejb.DispatcherSFBHome.class);
csg.dispatcher.ejb.DispatcherSFB dispatcher =
dispatcherHome.create();
String xmlString =
"<Transaction><UserID>Erik</UserID><Password>Nord</Password></Transaction>";
org.jdom.input.SAXBuilder sBuilder = new
org.jdom.input.SAXBuilder();
org.jdom.Document jdom = sBuilder.build(new
java.io.StringReader(xmlString));
org.jdom.output.DOMOutputter dOutput = new
org.jdom.output.DOMOutputter();
org.w3c.dom.Document dom = dOutput.output(jdom);
org.w3c.dom.Element pass = dom.getDocumentElement();
//org.jdom.Element jdomElement =
dispatcher.execute(jdom.getRootElement());
//org.w3c.dom.Document backDom = dispatcher.execute(dom);
org.w3c.dom.Element element = dispatcher.execute(pass);
org.jdom.input.DOMBuilder dBuilder = new
org.jdom.input.DOMBuilder();
org.jdom.Element jElement = dBuilder.build(element);
org.jdom.output.XMLOutputter xOutput = new
org.jdom.output.XMLOutputter();
System.out.println("Back from Dispatcher: " +
xOutput.outputString(jElement));
} catch (javax.naming.NamingException ne) {
ne.printStackTrace();
} catch (java.rmi.RemoteException re) {
re.printStackTrace();
} catch (javax.ejb.CreateException ce) {
ce.printStackTrace();
} catch (org.jdom.JDOMException jdome) {
jdome.printStackTrace();
}
}
So, this just creates the DOM and passes the Element. It would then
get an Element back. When I run this I get the following stack trace:
java.rmi.MarshalException: CORBA MARSHAL 0 No; nested exception is:
org.omg.CORBA.MARSHAL:
Ê
# minor code: 0 completed: No
org.omg.CORBA.MARSHAL:
Ê
# minor code: 0 completed: No
java.lang.Throwable(java.lang.String)
java.lang.Exception(java.lang.String)
java.lang.RuntimeException(java.lang.String)
org.omg.CORBA.SystemException(java.lang.String, int,
org.omg.CORBA.CompletionStatus)
org.omg.CORBA.MARSHAL(java.lang.String, int,
org.omg.CORBA.CompletionStatus)
org.omg.CORBA.MARSHAL(java.lang.String)
java.lang.Object
java.lang.reflect.Constructor.newInstance(java.lang.Object [])
org.omg.CORBA.SystemException
com.ibm.CORBA.iiop.ReplyMessage.getSystemException()
org.omg.CORBA.SystemException
com.ibm.rmi.iiop.ClientResponseImpl.getSystemException()
org.omg.CORBA.portable.InputStream
com.ibm.CORBA.iiop.ClientDelegate.invoke(org.omg.CORBA.Object,
org.omg.CORBA.portable.OutputStream)
org.omg.CORBA.portable.InputStream
org.omg.CORBA.portable.ObjectImpl._invoke(org.omg.CORBA.portable.OutputStream)
org.w3c.dom.Element
csg.dispatcher.ejb._DispatcherSFB_BaseStub.execute(org.w3c.dom.Element)
org.w3c.dom.Element
csg.dispatcher.ejb._DispatcherSFB_Stub.execute(org.w3c.dom.Element)
void csg.dispatcher.test.DispatcherUT.handleDo()
void csg.dispatcher.test.DispatcherUT.main(java.lang.String [])
I hope this helps you out.
Thank you
Erik Nord
>>>>>>>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<
On 7/6/01, 5:27:11 PM, Jason Hunter <jhunter@collab.net> wrote
regarding Re: [jdom-interest] Issues with b7:
> You don't say what the problem is. Just that things "stopped
working".
> If you could provide more details, we could be more help.
> -jh-
> > Erik Nord wrote:
> >
> > I have just built a web architecture that is using JDOM
extensively.
> > When we were using the b6 release we were having no problems. When
we
> > upgraded to the b7 our EJB's stopped working. We all of the sudden
had
> > issues passing any kind of JDOM or W3C objects. We eventually
tracked
> > this back to being an issue with the JDOM b7 release. We have since
> > went back to b6 and everything is working fine. We wanted to use
the
> > detach() method in b7. Has anyone seen this problem yet?
> > Thank you for you help.
> > Erik Nord
> > Senior Systems Programmer
> > CSG Systems, Inc.</PRE>
</BODY>
</HTML>