Zum Inhalt springen

Callbacks aus native Code


MikeVader

Empfohlene Beiträge

Ich habe ein "kleines" Problem mit Callbacks vom native Code auf Java Methoden. Mein System sieht kurz abgerissen so aus:

Ich habe eine Klasse Service, welche einige native Methoden besitzt und eine Callback Methode (normale Java Methode).

Die native Methoden werden im native code (einer C++ dll) implementiert. Diese DLL besitzt mehrere Threads. Einer dieser Threads sollte nun sporadisch die Callback Methode aufrufen.

Ich habe dies folgendermassen versucht:

Bei JNI_Onload habe ich den Pointer auf die JavaVM gespeichert.

Sobald nun der Thread die Callbackmethode aufrufen sollte, holt er sich über die JVM das JNI Environment und über dieses dann die Objekt und Method Daten für den Aufruf.

Hier tritt nun der Fehler auf. Sobald ich ihrgend eine Methode von JNIEnv aufrufe kommt einen Access Violation Exception (bzw. die jvm wird vom System abgeschossen).

Der Code ist richtig implementiert. Ich habe dies ausprobiert, indem ich ihn in eine JNI native Methode gepackt habe und diese Methode von Java aufrief. Leider ist dies ja keine Option, da der Callback nicht von einem JNI Aufruf abhängig ist.

Ihrgend eine Idee wieso es nicht funktioniert? Eine Bestätigung, dass es nicht funktioniert würde mir schon helfen.

P.S. Ich weiss, dass ich das Problem mit Pullen oder anderen Wegen lösen kann. Mir geht es nur darum, wieso ein Callback nur funktioniert, wenn er aus einer JNI native Methode kommt.

P.P.S. Ach ja synchronisation kann auch kein Problem sein ... nur schon das holen des Monitors gibt eine Exception.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...