Python und Corba

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
wivaxing
User
Beiträge: 21
Registriert: Mittwoch 17. Oktober 2007, 14:16

Mittwoch 17. Oktober 2007, 14:28

Hallo,

ich bin neu im Bereich Python und Corba (und beides zusammen erst recht) :)

Ich versuche einen Python Code zum Laufen zu bekommen, der so glaube ich an einem Corba-Zugriff zickt.

Code: Alles auswählen

orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
namestring="corbaname:rir:/NameService#%s/ExampleTr" % nprefix
obj=orb.string_to_object(namestring)
temp=obj._narrow(ExampleTr_If)
Bis dahin läuft alles gut - allerdings produziert die letzte Zeile das folgenden Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "CorbaTest.py", line 113, in ?
    temp=obj._narrow(ExampleTr_If)
NameError: name 'ExampleTr_If' is not defined
Jemand eine Idee, wo das Problem liegen könnte? Bzw. wie ich versuche den Fehler zu finden? Tappe da gerade im Dunkeln...

Vielen Dank
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

Mittwoch 17. Oktober 2007, 14:49

"'ExampleTr_If' is not defined" sagt doch eigentlich alles, oder?
BlackJack

Mittwoch 17. Oktober 2007, 14:49

Nunja ganz simpel wie der Text ja schon sagt: Der Name `ExampleTr_If` ist nicht definiert. Den kennt Python nicht. Kann es sein das Du dort eine Zeichenkette mit dem Namen an die Corba-Implementierung übergeben musst? Welche benutzt Du denn?
pto
User
Beiträge: 3
Registriert: Dienstag 16. Oktober 2007, 21:23

Mittwoch 17. Oktober 2007, 19:32

Ich denke was du versucht hast ist die Corba-Referenz in ein Stub-Objekt umzuwandeln. Das Stub-Modul solltest du erst mal importieren. Bsp:

Code: Alles auswählen

import Stub
Dann würde der zugriff auf die Klasse mit

Code: Alles auswählen

Stub.interface
erflogen.

Wenn du nur mit dem interface Namen hantieren willst, solltest du

Code: Alles auswählen

from Stub import interface
verwenden.
wivaxing
User
Beiträge: 21
Registriert: Mittwoch 17. Oktober 2007, 14:16

Donnerstag 18. Oktober 2007, 09:10

Danke. Ich bin sicher, daß die Zeile so zumindest richtig ist. D.h. keine Zeichenkette da rein muß. Ich bin allerdings nicht sicher ob alle Libraries, Dependencies korrekt sind. Ich habe eine lange Liste mit Imports weiß aber nicht, ob die so korrekt erstellt wurde. Da wurden AFAIK einige Python Dateien aus Corba IDL Dateien erstellt.

Also ich sehe das momentan so, daß entweder nicht alle Abhängigkeiten richtig oder vollständig übersetzt wurden und somit diese Definition fehlt. Oder das es ein Corba Problem ist und diese Definition irgendwie auf anderem Wege über Corba geliefert wird (das ist Spekulation meinerseits, da ich über Corba noch weniger weiß, wie über Python). Ich habe allerdings nur die Python-Sicht, um da raufzugucken.

Bzw. welche Möglichkeiten habe ich dies weiter einzukreisen?

@pto
Danke, aber kann leider noch nicht ganz folgen bzw. was bedeutet Stub bzw. Stub Objekt in diesem Fall?

danke!
BlackJack

Donnerstag 18. Oktober 2007, 14:03

Wo sollte denn der Name Deiner Meinung nach herkommen? Hauptsächlich gibt es ja nur drei übliche Möglichkeiten Namen in einem Modul zu binden: Zuweisung per ``=``, Definition per ``def`` oder ``class`` oder aus einem anderen Modul importieren.
wivaxing
User
Beiträge: 21
Registriert: Mittwoch 17. Oktober 2007, 14:16

Montag 22. Oktober 2007, 08:57

Habe das Problem gefunden - Teile der ursprünglichen IDL Definition mußten (aus irgendeinem Grund) mit omniidl neu für Python übersetzt werden...

*freu*
Danke an alle!
Antworten