2011-10-20 15 views
9

Używam CORBA Persistent realizację obiektów w Java IDLJava IDL: servertool nie rejestruje i wisi

jak w Java IDL: The "Hello World" Example

Śledziłem dokładnie procedurę opisaną w powyższym artykule

użyłem servertool rejestracji Persistent serwer, jak pokazano w przykładzie. ale gdy próbowałem się zarejestrować serwer przy użyciu składni jak w tym artykule:

servertool > register -server PersistentServer -applicationName s1 -classpath path_to_server_class_files

zawiesza I i robi robić niczego, to muszę zrobić ctrl+c aby powrócić do normalnego trybu

co może być źle z tym?

+0

Przechodzę przez ten sam problem. Pobrałem przykład z http://download.java.net/jdk7/archive/b123/docs/technotes/guides/idl/PersistentHello.zip i zacząłem postępować zgodnie z instrukcjami z pliku readme.txt, gdzie w kroku 5b mam problem. Dokładniej, jeśli uruchomię "register -server PersistentServer -applicationName s1 -classpath." w narzędziu serwerowym połączonym z portem 1050 ORB pojawia się komunikat "Zła definicja serwera: nie znaleziono głównej klasy". – bitek

+0

Uruchomiłem ORBD jako proces w tle, który ma orb.db w tym samym katalogu, co katalog PersistentHello; i zacząłem servertool z katalogu PersistentHello, gdzie jest klasa PersistentServer. Jeśli wyszukasz w Google ciąg "Zła definicja serwera: główna klasa nie została znaleziona", zobaczysz 2-3 raporty o błędach sprzed kilku lat. Mam kilka pomysłów, które można wypróbować, jeśli coś działa, dam ci znać. – bitek

+0

@AlexButum Dzięki za uwagę, ale nareszcie znajduję odpowiedź na http://www.cse.ohio-state.edu/~gurari/course/cis888w04/cis888w04su52.html#x76-590007.6 – mojtaba

Odpowiedz

1

Problem polega na tym, że ścieżka instalacji Java JDK zawiera spacje.

Jeśli twój JDK jest zainstalowany na ścieżce ze spacjami, na przykład "C: \ Program Files \ Java \ jdk1.7.0", musisz uruchomić orbd i serwertool używając ich bezwzględnej ścieżki (w Windowsie musisz użyć skrótu zapis ręcznie tj ~ [Tilda]):

C: \ progra ~ 1 \ Java \ jdk1.7.0 \ bin \ orbd -ORBInitialPort 1050 -serverPollingTime 200

C: \ progra ~ 1 \ Java \ jdk1 .7.0 \ bin \ serwertool -ORBInitialPort 1050

serwertool> rejestr -server PersistentServer -applicationName MyApp -classpath. (Ustawić ścieżkę klas, ile potrzeba dla plików generowanych przez idlj)

W systemie Windows można znaleźć krótką ścieżkę nazwę za pomocą: dir *.* /x

W przypadku, gdy za pomocą zmiennej środowiskowej jak% JAVA_HOME% odpowiada „C: \ Program Pliki \ Java \ jdk1.7.0 ", a następnie dołączasz je do ŚCIEŻKI, będzie to praca NOT, musisz użyć skrótu notacji ręcznej (z tyldą), tj." C: \ Progra ~ 1 \ Java \ jdk1.7.0 "

WSKAZÓWKA: Jeśli twój JDK jest zainstalowany w ścieżce bez spacji, na przykład C: \ Java \ jdk1.7.0, możesz s tart orbd i servertool bez użycia bezwzględnej ścieżki i to zadziała.

+0

Którą wersję JDK używasz dla tego ? – ajduke

+0

Najnowsza wersja Oracle JDK 7 w systemie Windows XP SP3 w wersji 32-bitowej i OpenJDK w wersji 1.7.0_147 w systemie Linux (Kubuntu 64bit). Przeczytaj komentarze z [tego postu] (http://stackoverflow.com/questions/1947864/corba-javas-servertool-does-not-allow-me-to-register-a-server-class/1995029#1995029) – bitek

0

Running CORBA Applications prosimy o zapoznanie się z pełnym opisem

Tworzenie niedopałek Java i klas szkielet kompilując plik IDL z polecenia 'idlj.

idlj -fall IDLfile.idl 

skompilować pliki źródłowe

javac IDLserver.java 
javac IDLclient.java 
or 

javac javac *.java IDLmodule/*.java 

start Request Object Broker (ORB) demon

unix: orbd -ORBInitialPort 4321 & 
windows: start orbd -ORBInitialPort 4321 

na Uniksie, polecenie 'ps -e' pokazuje numer przypisany do procesu orbd. Do zabicia procesu można użyć komendy kill.

Podczas uruchamiania demon zapisuje wiadomości w podkatalogu orb.db. Wywołaj serwer UNIX: java IDLserver -ORBInitialHost localhost -ORBInitialPort 4321 & okna: start java IDLserver -ORBInitialHost localhost -ORBInitialPort 4321 wywołać klientowi

java IDLclient -ORBInitialHost localhost -ORBInitialPort 4321 

Domyślna ORB początkową portu to 900 (tylko root może uruchomić go na solaris).

+0

"(tylko root może uruchomić go w systemie Solaris)". Właściwie nie!. W rzeczywistości Solaris różni się od systemu Windows i Linux, ponieważ ma on uprawnienie 'net_privaddr', które można przypisać do użytkownika, procesu, pliku wykonywalnego lub usługi. O wiele bezpieczniejsze. – peterh