Uruchomienie klienta CORBA - błędy

0

Mam problem z uruchomienie klienta Java napisanego w CORBie. Name-Service już uruchomiłem, serwer też (pisany w C++/omniORB), teraz mam klienta w Javie, i przy jego uruchomieniu otrzymuję błędy:

java client -ORBInitRef NameService=IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000006c000000010102000a00000031302e302e322e3135000a1a0b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000007160854f010011dc
2012-04-11 1316 com.sun.corba.se.impl.orb.ORBImpl getLocalHostName
WARNING: "IOP00710208: (INTERNAL) Unable to determine local hostname from InetAddress.getLocalHost().getHostName()"
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 208 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.getLocalHostFailed(ORBUtilSystemException.java:3843)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.getLocalHostFailed(ORBUtilSystemException.java:3861)
at com.sun.corba.se.impl.orb.ORBImpl.getLocalHostName(ORBImpl.java:1604)
at com.sun.corba.se.impl.orb.ORBImpl.set_parameters(ORBImpl.java:555)
at org.omg.CORBA.ORB.init(ORB.java:354)
at client.main(client.java:5)
Caused by: java.net.UnknownHostException: vm: vm
at java.net.InetAddress.getLocalHost(InetAddress.java:1426)
at com.sun.corba.se.impl.orb.ORBImpl.getLocalHostName(ORBImpl.java:1602)
... 3 more
Exception in thread "main" org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 208 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.getLocalHostFailed(ORBUtilSystemException.java:3843)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.getLocalHostFailed(ORBUtilSystemException.java:3861)
at com.sun.corba.se.impl.orb.ORBImpl.getLocalHostName(ORBImpl.java:1604)
at com.sun.corba.se.impl.orb.ORBImpl.set_parameters(ORBImpl.java:555)
at org.omg.CORBA.ORB.init(ORB.java:354)
at client.main(client.java:5)
Caused by: java.net.UnknownHostException: vm: vm
at java.net.InetAddress.getLocalHost(InetAddress.java:1426)
at com.sun.corba.se.impl.orb.ORBImpl.getLocalHostName(ORBImpl.java:1602)
... 3 more

Co może być błędem?

0

Przecież masz napisane. Uruchomiłeś to pod jakimś VM który nie ma skonfigurowanego poprawnie adresu IP i leci jakis wyjątek przy próbie zrobienia getLocalHostName()

0

No tyle to i ja przeczytałem;] Mój klient wygląda tak (btw to nie jest mój kod)

import java.util.*;

public class client {
    public static void main(String [] args) {
        org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
        if (orb == null) System.exit(-1);
        try {
            // obtain service from naming server
            org.omg.CORBA.Object ns_obj = orb.resolve_initial_references("NameService");
            org.omg.CosNaming.NamingContext nc
                = org.omg.CosNaming.NamingContextHelper.narrow(ns_obj);
            org.omg.CosNaming.NameComponent [] path
                = { new org.omg.CosNaming.NameComponent("TestServer", "") };
            org.omg.CORBA.Object obj = nc.resolve(path);
            Hello hello = HelloHelper.narrow(obj);

            // use service
            String server = hello.say_hello("Java client");
            System.out.println("answer from: " + server);

            // destroy
            orb.destroy();
        } catch (org.omg.CORBA.ORBPackage.InvalidName exception) {
            exception.printStackTrace(System.out);
        } catch (org.omg.CosNaming.NamingContextPackage.NotFound exception) {
            exception.printStackTrace(System.out);
        } catch (org.omg.CosNaming.NamingContextPackage.CannotProceed exception) {
            exception.printStackTrace(System.out);
        } catch (org.omg.CosNaming.NamingContextPackage.InvalidName exception) {
            exception.printStackTrace(System.out);
        } catch (org.omg.CORBA.COMM_FAILURE exception) {
            exception.printStackTrace(System.out);
        } catch (Exception exception) {
            exception.printStackTrace(System.out);
        }
    }
}

Może to chodzi o pliki serwera jakieś? Mam katalog cpp i java. W katalogu cpp mam pliki:

hello.hh Hello_impl.cpp Hello_impl.o helloSK.o server.cpp
hello.idl Hello_impl.h helloSK.cc server server.o

W katalogu java mam pliki:

client.class HelloHelper.java Hello.java _HelloStub.java
client.java HelloHolder.class HelloOperations.class
Hello.class HelloHolder.java HelloOperations.java
HelloHelper.class hello.idl _HelloStub.class

czyli ten sam interfejs idl, tylko raz skompilowany do Javy, za pomocą idlj, a drugi raz za pomocą omniORB. Name-service uruchamiam z omniORBa, serwer też jest w C++ -> i spoko, to się widzi, tylko klient coś krzyczy. Nie wiem, co mogę tu poprawić...

0

Stacktrace twierdzi że problem leży po stronie systemu na którym to uruchamiasz a nie po stronie kodu.

0

Hm, nie mam pojęcia, co się stało: uruchomiłem klienta tak: java client -ORBInitRef NameService=corbaloc:2809/NameService i... poszło;] Dzięki za pomoc - a taki mały offtop, skoro odpowiadałeś, zakładam, że znasz się na CORBie - masz może jakieś strony/linki/materiały do CORBy? W sumie najbardziej chodzi mi o C++ dzięki:)

0

Widzisz, tak to jest jak się uruchamia randomowy kod nie wiedząc jak on ma działać ;]
CORBe znam dość pobieżnie i tylko pod kątem Javy/Pythona.

0

No tak, ja jestem na etapie 1 dnia Corbowania:D w sumie i tak myślałem, że będzie znacznie gorzej. Ok, w takim razie będę sobie jakoś radził sam. Python mówisz? Prześwietny język, no ale mam zrobić to w C++/Java.

Pozdrawiam i dzięki za odp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1