<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Message</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2800.1141" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>I have set up the 
echo example on the sun kit along with a client and all works from pure java. I 
am using the POA - Tie example but using your echo program instead of the hello 
sun demo.</FONT></SPAN></DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>I have modified the 
eg3_clt and have gotten the name servers to talk and connect but I get a nil 
client return. I have tried using the -ORBverifyObjectExistsAndType 0 arg on the 
command line. I have VC++ 6.0 installed, but have compiled from your echo 
directory. I am using windows XP, and have both client and server executing on 
one box.</FONT></SPAN></DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>It appears the 
object is nil after the narrow request.</FONT></SPAN></DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>// eg3_clt.cc - This 
is the source code of example 3 used in Chapter 
2<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"The Basics" of the omniORB user 
guide.<BR>//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
This is the client. It uses the COSS naming 
service<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
to obtain the object reference.<BR>//<BR>// Usage: 
eg3_clt<BR>//<BR>//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; On startup, 
the client lookup the object reference from 
the<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COS naming 
service.<BR>//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The name which 
the object is bound to is as 
follows:<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
root&nbsp; 
[context]<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
|<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
text&nbsp; [context] kind 
[my_context]<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
|<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Echo&nbsp; [object]&nbsp; kind [Object]<BR>//</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>#include 
&lt;iostream.h&gt;<BR>#include &lt;echo.hh&gt;</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>static 
CORBA::Object_ptr getObjectReference(CORBA::ORB_ptr orb);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>static void 
hello(Echo_ptr e)<BR>{<BR>&nbsp; if( CORBA::is_nil(e) ) {<BR>&nbsp;&nbsp;&nbsp; 
cerr &lt;&lt; "hello: The object reference is nil!\n" &lt;&lt; 
endl;<BR>&nbsp;&nbsp;&nbsp; return;<BR>&nbsp; }</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp; 
CORBA::String_var src = (const char*) "Hello!";</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp; 
CORBA::String_var dest = e-&gt;echoString(src);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp; cerr &lt;&lt; 
"I said, \"" &lt;&lt; (char*)src &lt;&lt; "\"." &lt;&lt; 
endl<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "The Echo object replied, 
\"" &lt;&lt; (char*)dest &lt;&lt;"\"." &lt;&lt; endl;<BR>}</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial 
size=2>//////////////////////////////////////////////////////////////////////</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>int<BR>main (int 
argc, char **argv)<BR>{<BR>&nbsp; try {<BR>&nbsp;&nbsp;&nbsp; CORBA::ORB_var orb 
= CORBA::ORB_init(argc, argv);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 
CORBA::Object_var obj = getObjectReference(orb);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 
Echo_var echoref = Echo::_narrow(obj);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 
for (CORBA::ULong count=0; count &lt; 10; 
count++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hello(echoref);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 
orb-&gt;destroy();<BR>&nbsp; }<BR>&nbsp; catch(CORBA::COMM_FAILURE&amp; ex) 
{<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Caught system exception COMM_FAILURE -- 
unable to contact the "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;&lt; "object." &lt;&lt; endl;<BR>&nbsp; }<BR>&nbsp; 
catch(CORBA::SystemException&amp;) {<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Caught 
CORBA::SystemException." &lt;&lt; endl;<BR>&nbsp; }<BR>&nbsp; 
catch(CORBA::Exception&amp;) {<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Caught 
CORBA::Exception." &lt;&lt; endl;<BR>&nbsp; }<BR>&nbsp; 
catch(omniORB::fatalException&amp; fe) {<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; 
"Caught omniORB::fatalException:" &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp; cerr 
&lt;&lt; "&nbsp; file: " &lt;&lt; fe.file() &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp; 
cerr &lt;&lt; "&nbsp; line: " &lt;&lt; fe.line() &lt;&lt; 
endl;<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "&nbsp; mesg: " &lt;&lt; fe.errmsg() 
&lt;&lt; endl;<BR>&nbsp; }<BR>&nbsp; catch(...) {<BR>&nbsp;&nbsp;&nbsp; cerr 
&lt;&lt; "Caught unknown exception." &lt;&lt; endl;<BR>&nbsp; 
}</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp; return 
0;<BR>}</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial 
size=2>//////////////////////////////////////////////////////////////////////</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>static 
CORBA::Object_ptr<BR>getObjectReference(CORBA::ORB_ptr orb)<BR>{<BR>&nbsp; 
CosNaming::NamingContext_var rootContext;</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp; try 
{<BR>&nbsp;&nbsp;&nbsp; // Obtain a reference to the root context of the Name 
service:<BR>&nbsp;&nbsp;&nbsp; CORBA::Object_var obj;<BR>&nbsp;&nbsp;&nbsp; obj 
= orb-&gt;resolve_initial_references("NameService");</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 
// Narrow the reference returned.<BR>&nbsp;&nbsp;&nbsp; rootContext = 
CosNaming::NamingContext::_narrow(obj);<BR>&nbsp;&nbsp;&nbsp; if( 
CORBA::is_nil(rootContext) ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr &lt;&lt; 
"Failed to narrow the root naming context." &lt;&lt; 
endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
CORBA::Object::_nil();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; 
catch(CORBA::ORB::InvalidName&amp; ex) {<BR>&nbsp;&nbsp;&nbsp; // This should 
not happen!<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Service required is invalid 
[does not exist]." &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp; return 
CORBA::Object::_nil();<BR>&nbsp; }</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>&nbsp; // Create a 
name object, containing the name test/context:<BR>&nbsp; CosNaming::Name 
name;<BR>&nbsp; name.length(1);</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><SPAN class=451260401-06082003><FONT face=Arial size=2>//&nbsp; 
name[0].id&nbsp;&nbsp; = (const char*) 
"test";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // string copied<BR>//&nbsp; 
name[0].kind = (const char*) "my_context"; // string copied<BR>//&nbsp; 
name[1].id&nbsp;&nbsp; = (const char*) "Echo";<BR>//&nbsp; name[1].kind = (const 
char*) "Object";<BR>&nbsp; name[0].id&nbsp;&nbsp; = (const char*) 
"Echo";<BR>&nbsp; name[0].kind = (const char*) "";<BR>&nbsp; // Note on kind: 
The kind field is used to indicate the type<BR>&nbsp; // of the object. This is 
to avoid conventions such as that used<BR>&nbsp; // by files (name.type -- e.g. 
test.ps = postscript etc.)</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV><SPAN class=451260401-06082003>
<DIV><BR><FONT face=Arial size=2>&nbsp; try {<BR>&nbsp;&nbsp;&nbsp; // Resolve 
the name to an object reference.<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Context 
not found." &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp; return 
rootContext-&gt;resolve(name);<BR>&nbsp; }<BR>&nbsp; 
catch(CosNaming::NamingContext::NotFound&amp; ex) {<BR>&nbsp;&nbsp;&nbsp; // 
This exception is thrown if any of the components of the<BR>&nbsp;&nbsp;&nbsp; 
// path [contexts or the object] aren't found:<BR>&nbsp;&nbsp;&nbsp; cerr 
&lt;&lt; "Context not found." &lt;&lt; endl;<BR>&nbsp; }<BR>&nbsp; 
catch(CORBA::COMM_FAILURE&amp; ex) {<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Caught 
system exception COMM_FAILURE -- unable to contact the 
"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "naming service." 
&lt;&lt; endl;<BR>&nbsp; }<BR>&nbsp; catch(CORBA::SystemException&amp;) 
{<BR>&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Caught a CORBA::SystemException while 
using the naming service."<BR>&nbsp; &lt;&lt; endl;<BR>&nbsp; }</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp; return 
CORBA::Object::_nil();<BR>}<BR></FONT></DIV></SPAN></FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV align=left><FONT face=Arial size=2>--</FONT></DIV>
<DIV align=left><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV align=left><FONT face=Arial size=2>Cheers,</FONT></DIV>
<DIV align=left><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV align=left><FONT face=Arial size=2>You can have it fast, cheap and good, 
but you only get to pick 2.</FONT></DIV>
<DIV align=left><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV align=left><FONT face=Arial size=2>(608) 242-4100 x32610</FONT></DIV>
<DIV>&nbsp;</DIV></BODY></HTML>