[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00694] CORBA の練習
------------------------- infoseek ML Sponsor --------------------------
★★楽しかった夏休み!★★でもサイフの中身はカラッポ・・★★
┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓
┃ロ┃┃ー┃┃ン┃┃カ┃┃ー┃┃ド┃┃特┃┃集┃┃!┃
┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛
貴方に合ったローンカードは? http://www.loanginza.com/01
------------------------------------------------------------------------
かせ野と申します。よろしくお願いします。
今、サーバ(Linux)サイドとクライアント(Win2000)サイドのコード
を書いています。J2SDKの1.4を使用しています。
サーバ上で、以下の作業をしました。
<Test1.idl>
module Test1
{
interface Test1if
{
string OutMessage(in string InMessage);
};
};
これを、
$ idlj -fall Test1.idl
$ cd Test1
$ javac -c . *
としました。
idlファイルから見て2階層下(Test1/Test1)に、
Test1if.class Test1ifHolder.class _Test1ifStub.class
Test1ifHelper.class Test1ifOperations.class
Test1ifPOA.class
という6ファイルが作成されました。
idlファイルと同じディレクトリに、
<Test1.java>
import Test1.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.util.Properties;
class Test1_Impl extends Test1ifPOA
{
private ORB orb;
public void setORB(ORB orb_val)
{
orb = orb_val;
}
public String OutMessage(String InMessage)
{
return InMessage + " from CORBA.";
}
}
public class Test1
{
public static void main(String args[])
{
try{
ORB orb = ORB.init(args, null);
POA rootpoa =
POAHelper.narrow
(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();
Test1_Impl objTest1impl = new Test1_Impl();
objTest1impl.setORB(orb);
org.omg.CORBA.Object ref =
rootpoa.servant_to_reference(objTest1impl);
Test1if href = Test1ifHelper.narrow(ref);
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContextExt ncRef =
NamingContextExtHelper.narrow(objRef);
NameComponent path[] = ncRef.to_name("Test1if");
ncRef.rebind(path,href);
System.out.println("Start Test1!!");
orb.run();
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.out.println("Stop Test1!!");
}
}
というファイルを作り、
$ javac -d . Test1.java
でコンパイルしました。
そして、
$ tnameserv -ORBInitialPort 10050 &
$ java Test1 -ORBInitialHost 192.168.1.5 -ORBInitialPort 10050 &
と入力して、プロセスを常駐させました。
次に、クライアント側で、
<UseTest1.java>
import Test1.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class UseTest1 {
static Test1if objTest1;
public static void main(String args[])
{
try{
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContextExt ncRef =
NamingContextExtHelper.narrow(objRef);
String name = "Test1if";
objTest1 = Test1ifHelper.narrow(ncRef.resolve_str(name));
System.out.println(objTest1.OutMessage("試験文字列"));
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
というファイルを作り、同じフォルダにサーバ上で作成したディレクトリ
Test1を置き、
> javac -d . UseTest1.java
> java UseTest2 -ORBInitialHost 192.168.1.5 -ORBInitialPort 10050
と入力したところ、
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection(Connecti
onTable.java:148)
at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection(Connecti
onTable.java:65)
at com.sun.corba.se.internal.iiop.GIOPImpl.getConnection(GIOPImpl.java:6
7)
at com.sun.corba.se.internal.corba.ClientDelegate.createRequest(ClientDe
legate.java:638)
at com.sun.corba.se.internal.corba.ClientDelegate.createRequest(ClientDe
legate.java:580)
at com.sun.corba.se.internal.corba.ClientDelegate.request(ClientDelegate
.java:872)
at org.omg.CORBA.portable.ObjectImpl._request(ObjectImpl.java:431)
at org.omg.CosNaming._NamingContextExtStub.resolve_str(_NamingContextExt
Stub.java:156)
at UseTest1.main(UseTest1.java:20)
というエラーが表示されました。
参考サイトです。
http://www.hellohiro.com/corba.htm
http://www.dmz.hitachi-sk.co.jp/Java/Tech/corba/
長いソースコードで申し訳ありません。間違いをご指摘いただけますよう、
よろしくお願いいたします。
------------------------------------------------------------------------
★今さら人に聞けないこと、この際だから聞いちゃおう!
http://research.infoseek.co.jp/entry_n.phtml?magazine_id=107&svx=971122