[59725] in SAPr3-news
Re: Problem mit Applet das JCo benutzt
daemon@ATHENA.MIT.EDU (Lothar Kimmeringer)
Thu Jul 19 18:39:07 2007
To: sapr3-news@mit.edu
Date: Fri, 20 Jul 2007 00:38:59 +0200
From: Lothar Kimmeringer <news200707@kimmeringer.de>
Message-ID: <73iyj3oq1f6a$.dlg@kimmeringer.de>
Reply-To: news@kimmeringer.de
marleneernst@gmx.net wrote:
> Ich habe ein Applet das mittels JCo Verbindung zu SAP herstellt und
> Daten abfragt in Eclipse erstellt. Dort funktioniert es einwandfrei.
> Sobald ich dieses Applet aber in eine html-Seite integriere geht es
> nicht mehr. Das Applet wird angezeigt, man kann etwas eingeben und
> auch ausgeben, jedoch wird JCo nicht mehr gefunden.
Volker und Henner haben ja schon was dazu geschrieben, habe
hier aber noch zwei Cent uebrig ;-)
Prinzipiell *koennte* man ein Javaapplet schreiben, dass direkt
per JCo auf SAP zugreift. Dazu muesste man dieses signieren und
damit aus der Sandbox "ausbrechen" lassen. Damit kann auch ein
Applet DLLs nachladen und JNI-Methoden aufrufen. Bei SAP-JCo
ergibt sich aber ein zusaetzliches Problem. Die DLL, die ge-
laden wird, heisst librfc32.dll und mit dem .NET-Framework
gibt es eine registrierte DLL gleichen Namens. Befindet sich
die SAP-DLL nicht im Arbeitsverzeichnis des ausfuehrenden
Prozesses, wird die .NET-DLL statt der SAP-DLL geladen, so dass
man wieder Spass bei der Ausfuehrung hat.
Gemein an der Sache ist, dass man dann Systeme hat, wo es laeuft
und andere Systeme, wo es nicht laeuft und man nicht sofort weiss,
warum eigentlich nicht.
> Exception in thread "AWT-EventQueue-2"
> java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could
> not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
> access denied (java.util.PropertyPermission jco.middleware_library
> read)
Da scheint vor dem Versuch, die DLL zu laden, eine Ueberpruefung
der entsprechenden Berechtigung dazu stattzufinden. Ansonsten
haette man hier einen UnsatisfiedLinkError zu sehen bekommen.
> Bei allen weiteren Versuchen erhalte ich folgende Fehlermeldung:
> ************************************************************************************************************************
> Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError:
> Could not initialize class com.sap.mw.jco.JCO
Das liegt daran, dass es einen Fehler innerhalb des static
Contructors gab, als die Klasse beim loadClass des Classloaders
haette geladen werden sollen. Da die Klasse nicht vollstaendig
geladen wurde, wird sie richtigerweise im Anschluss nicht gekannt.
> Ich habe schon alles mögliche probiert und arbeite nun schon den
> vierten Tag an diesem Problem.
> path und classpath sind gesetzt und ich habe auch jede erdenkliche
> Variante ausprobiert dem applet über den applet tag zu sagen wo es JCo
> finden kann.
>
> Hoffentlich kann mir jemand helfen, denn ich weiß nicht mehr weiter!
Wenn Du weiterhin JCo innerhalb des Applets nutzen moechtest,
solltest Du Dir ein Buch ueber JNI besorgen (es gibt eigentlich
nur zwei und ich weiss gerade nicht, in welchem das beschrieben
wurde). Empfehlen wuerde ich Dir aber das Vorgehen wie von
Henner beschrieben.
Gruesse, Lothar
--
Lothar Kimmeringer E-Mail: spamfang@kimmeringer.de
PGP-encrypted mails preferred (Key-ID: 0x8BC3CD81)
Always remember: The answer is forty-two, there can only be wrong
questions!