首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Corba NamingContextExtStub.resolve

Corba NamingContextExtStub.resolve
EN

Stack Overflow用户
提问于 2018-06-26 15:01:30
回答 1查看 255关注 0票数 0

第一次在这里问问题,如果太愚蠢或太简单,请道歉。我正在学习CORBA,我正在使用对象和上下文绑定编写一个简单的客户端服务器应用程序,但在尝试解析对象绑定时,我遇到了这个错误,有人能告诉我我做错了什么吗?

代码语言:javascript
复制
Bienvenu dans le systeme
Erreur : org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
    at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(Unknown Source)
    at org.omg.CosNaming._NamingContextExtStub.resolve_str(Unknown Source)
    at CorbaClient.Main.main(Main.java:26)

客户端代码

代码语言:javascript
复制
package CorbaClient;



import BoutiqueInformatique.*;
import org.omg.CosNaming.*; // inclure le service de nommage
import org.omg.CORBA.*; // manipuler des objets CORBA

public class Main {

    public static void main(String args[]) {
        try {
            // creer et initialiser l'ORB
            ORB orb = ORB.init(args, null);
            // obtenir une reference au service de nommage
            org.omg.CORBA.Object objRef = orb
                    .resolve_initial_references("NameService");
            // Utiliser NamingContextExt au lieu de NamingContext.
            // car interoperable
            NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

            System.out.println("Bienvenu dans le systeme");

            // demander la reference de l'objet au service de noms          
            String nom = "Boutique";
            Boutique maBoutique = BoutiqueHelper.narrow(ncRef.resolve_str(nom));



            System.out.println(maBoutique.afficherListeEmploie());

            Emploie monEmploie = maBoutique.creerEmploie("Technicien", 5);
            maBoutique.creerEmploie("Caissier", 2);

            System.out.println(maBoutique.afficherListeEmploie());

            maBoutique.rechercherEmploie("Caissier");

            maBoutique.supprimerEmploie("Caissier");
            System.out.println("Suppression d'un emploie ...");


            monEmploie.ajout(5);
            monEmploie.suppresion(2);


            //Affichage de la moyenne
            monEmploie.moyenneAjout(2);

            //Affichage de l'ecart type
            monEmploie.moyenneSuppresion(2);




        } catch (Exception e) {
            System.out.println("Erreur : " + e);
            e.printStackTrace(System.out);
        }
    } // fin du main

}

代码服务

代码语言:javascript
复制
package CorbaServeur;

import org.omg.CORBA.ORB;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;

import BoutiqueInformatique.Boutique;
import BoutiqueInformatique.BoutiqueHelper;

public class Main {
    public static void main(String args[]) {
        try {
            // creer et initialiser l'ORB qui integre
                        // le service de noms
                        ORB orb = ORB.init(args, null);
                        // obtenir la reference de rootpoa &            
                        POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
                        // activer le POAManager
                        rootpoa.the_POAManager().activate();

                        // creer le servant
                        ServeurBoutique BoutiqueRef = new ServeurBoutique("LDLC");

                        // obtenir la reference CORBA du servant
                        org.omg.CORBA.Object ref = rootpoa.servant_to_reference(BoutiqueRef);

                        Boutique href = BoutiqueHelper.narrow(ref);

                        // obtenir la reference du contexte de nommage
                        org.omg.CORBA.Object objRef = orb
                                .resolve_initial_references("NameService");

                        // Utiliser NamingContextExt qui est Interoperable
                        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

                        // enregistrer le servant dans le service de nommage
                        String name = "Boutique";
                        NameComponent path[] = ncRef.to_name(name);
                        ncRef.rebind(path, href);

                        System.out.println("Boutique est prête et est en attente.");
                        // attendre les invocations des clients




        } catch (Exception e) {
            System.out.println("Erreur : " + e);
            e.printStackTrace(System.out);
        }
    } // fin du main
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-30 22:15:11

我看到的一个问题是您的服务器在客户端可以连接之前就终止了。在服务器上,必须调用ORB.run()方法才能侦听传入的客户端调用。您可以尝试在main方法中调用ORB.run(),此时您的注释正确地指出您必须等待客户端调用。稍后,您可能希望将该调用移动到自己的线程中,特别是如果您的应用程序有一个UI要提供服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51036719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档