Applet und JWS auf Apache-Axis (SOAP)

Status
Nicht offen für weitere Antworten.

s-markus

Mitglied
Hallo!

Ich habe folgendes gemacht:
Hab mir ein Java-Applet gebaut (funktioniert).
Hab mir Tomcat mit Axis installiert und ihm einen ganz einfachen JavaWebService gegeben.
Also ich habe die Klasse
Code:
public class test
{
  public double testMethode( String job, double x )
  {
    if( "Quadrat".equalsIgnoreCase( job ) )
      return x * x;
    if( "Wurzel".equalsIgnoreCase( job ) )
      return Math.sqrt( x );
    return 0.;
  }
}
in mein Apache-Tomcat-(mit Axis)-Verzeichnis unter ../apache-tomcat/webapps/axis/test.jws abgespeichert. Alles auf meinem
"localhost".
Dann habe ich das Applet um die folgenden Zeilen erweitert:
Code:
Object webservicereturn=null;
try{
        String  wsEndpoint = "http://localhost:8080/axis/test.jws";
        String  wsMethod   = "testMethode";
****  Service service    = new Service(); *********************************************
        Call    call       = (Call)service.createCall();
        call.setTargetEndpointAddress( new URL( wsEndpoint ) );
        call.setOperationName( wsMethod );
        call.addParameter( "job", Constants.XSD_STRING, ParameterMode.IN );
        call.addParameter( "x",   Constants.XSD_DOUBLE, ParameterMode.IN );
        call.setReturnType( Constants.XSD_DOUBLE );
        webservicereturn = call.invoke( new Object[] { "wurzel", new Double( "12.7" ) } );
 }
    catch(Exception ex) {}

JOptionPane.showMessageDialog(webservicereturn.toString() ... );

Jetzt hab ich das Applet als Applikation gestartet (vorher natürlich Tomcat gestartet) und die JOptionPane zeigt mir das
richtige Ergebnis.
DAS PROBLEM: Wenn ich die ganze Sache im Firefox als Applet ausführe, dann kommt keine JOptionPane, dafür aber eine
SecurityException:
Code:
Java Plug-in 1.6.0
Verwendung der JRE-Version 1.6.0 Java HotSpot(TM) Client VM
....
java.lang.ExceptionInInitializerError
        at org.apache.commons.discovery.jdk.JDKHooks.<clinit>(JDKHooks.java:75)
        at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:412)
        at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378)
        at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
        at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
        at org.apache.axis.handlers.BasicHandler.<clinit>(BasicHandler.java:43)
        at org.apache.axis.client.Service.getAxisClient(Service.java:104)
        at org.apache.axis.client.Service.<init>(Service.java:113)
*****at LNdW_Applet.init(LNdW_Applet.java:35) *************************************
        at sun.applet.AppletPanel.run(AppletPanel.java:417)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:594)
        at java.lang.ClassLoader.<init>(ClassLoader.java:225)
        at org.apache.commons.discovery.jdk.PsuedoSystemClassLoader.<init>(PsuedoSystemClassLoader.java:73)
        at org.apache.commons.discovery.jdk.JDK12Hooks.findSystemClassLoader(JDK12Hooks.java:215)
        at org.apache.commons.discovery.jdk.JDK12Hooks.<clinit>(JDK12Hooks.java:73)
        ... 13 more
(Die **** in diesem Code-Abschnitt entsprechen der Zeile im vorherigen Source-Code-Abschnitt.)

Ich hatte die ganze Sache bis jetzt so verstanden, dass ich im Applet schon eine Verbindung zu dem Server aufbauen drauf, von dem auch das Applet selbst gekommen ist - in diesem Fall mein localhost. Was läuft hier verkehrt?

Bei dem, der das alles bis hier durchglesen hat müsste ich mich glaub ich mal persönlich bedanken.

Viele Grüße,

Markus
 

s-markus

Mitglied
Hallo,

es scheint so, als ob das was ich versuche aussichtslos ist ...
Deshalb markiere ich den Thread mal als gelöst.

Viele Grüße,

Markus
 

Wildcard

Top Contributor
Das hat nichts mit der Verbindung zum Server zu tun, die ist erlaubt.
at org.apache.commons.discovery.jdk.PsuedoSystemClassLoader.<init>(PsuedoSystemClassLoader.java:73)
at org.apache.commons.discovery.jdk.JDK12Hooks.findSystemClassLoader(JDK12Hooks.java:215)
at org.apache.commons.discovery.jdk.JDK12Hooks.<clinit>(JDK12Hooks.java:73)
Deine lib versucht einen Classloader zu installieren den der SecurityManger nicht erlaubt.
Wenn du dein Applet signierst funktioniert das auch.
 

s-markus

Mitglied
Danke!

Es hat jemand geantwortet! Juhu! -> DANKE!
Nun zum Thema:
Mir ist klar, dass ich ja noch nicht mal gesagt habe wohin ich connecten will.
Die Exception wird ja in der Zeile new Service(); gethrowt.
Die lib die etwas verbotenes Versucht ist nicht von mir sondern von Apache oder so.
Ich habe jetzt schon 3 Tage im Internet gesucht und versucht irgendwie zu verstehen warum es so ist wie es ist.
Warum will den diese lib eine ClassLoader installieren? Wozu? Kann man das nicht abstellen?
Ich möchte doch einfach nur diesen jws im Applet nutzen. Mehr nicht.
Ja, ich habe auch gelesen dass man Applets signieren kann. Aber dann wird der User beim Laden
aufgefordert eine Security-Frage zu beantworten. Das möchte ich nicht.
Es würde glaube ich in dem Context für den ich programmiere unseriös wirken.

Sollte jemand wissen wie man den WebService im Applet nutzen kann ohne das Applet zu signieren, dann bin ich für jeden Rat wirklich sehr dankbar, gebe aber an dieser Stelle auf ...

Warum möchte ich das eigentlich?
1. Habe ein Applet das etwas ausrechnet. <- Diese Berechnung möchte ich gern auf den Server auslagern.
2. Es soll für die Erbebnisse eine Druckansicht geben. Applets auszudrucken geht in vielen Browser (zumindest in meinem Firefox nicht) nicht. Deshalb hab ich mir gedacht: Schickst die Ergebnisse zu deinem WebServer, der geniert schnell eine html-seite und ein dafür benötigtes Bild und schickt dem Applet die URL zurück. Das Applet macht dann ...showDocument(..) und die Druckansicht ist erledigt.

Ich überlege jetzt wie ich die ganze Sache mit Servlets implementieren kann. Die Berechnung auszulagern scheint soweit kein Problem. Nur für das Generieren der html-Seite und dem Bild ist mir noch nichts gutes eingefallen. Dazu vielleicht irgendjemand gute Ideen?

Viele Grüße,

Markus
 

Wildcard

Top Contributor
War mir schon klar das es sich um eine Apache lib handelt :wink:
Sofern die Apache Leute keinen SecurityManager freundlichen Patch haben (der Logging und ähnliches entfernt) und du dein Applet nicht signieren möchtest bleibt dir nur übrig die Lib selbst entsprechend anzupassen oder sie schlicht nicht zu verwenden.
Anders geht's nunmal nicht.
Eventuell mal bei Apache vorbeischauen und freundlich um Hilfe bitten.
 

s-markus

Mitglied
Wildcard hat gesagt.:
... bleibt dir nur übrig die Lib selbst entsprechend anzupassen oder sie schlicht nicht zu verwenden.

Ohh, meine Ohren spitzen sich!
Wie mach ich das?
Also die lib nicht verwenden ... mhhh ... mir würde jetzt nicht einfallen wie das gehen soll.
Und die lib anpassen ... mhhh. .. gibts denn den Quellcode irgendwo?
Hat das schon mal jemand erfolgreich gemacht? Ist das überhaupt legal?

Viele Grüße,

Markus

p.s. @ Wildcard: Glaubst du es wäre eine bessere Idee auf richtige eigenständige Servlets umzusteigen?
 

Wildcard

Top Contributor
Steht unter der Apache Licence welche sehr freizügig ist (für Details bitte selbst die Lizenz lesen), aber dieses Vorhaben würde ich nicht empfehlen da es vermutlich einige Zeit in Anspruch nehmen wird.
Nimm doch stattdessen zum Beispiel WSIF oder ein anderes Webservice Framework.
Ob's im Applet funktioniert? Keine Ahnung, da musst du dich selbst schlau machen.
http://en.wikipedia.org/wiki/Web_Services_Invocation_Framework
 

s-markus

Mitglied
Wildcard hat gesagt.:
... aber dieses Vorhaben würde ich nicht empfehlen da es vermutlich einige Zeit in Anspruch nehmen wird.
Glaub auch wirklich dass das etwas für Freaks ist, sonst wäre ich denke ich in den letzten Tagen auf so eine abgespeckte lib gestoßen. Also die lib verändern oder weglassen ist keine Option mehr.

Ich werde mal versuchen WSIF zu benutzen und poste dann nochmal ob ich Erfolg hatte.

Ich tendiere aber im Moment wirklich sehr dazu mir einfach selbst so ein Servlet zuschreiben. Das hätte dann wahrscheinlich auch den Vorteil, dass meine jar (meines Applets) nicht so groß wird. Die Axis jars sind ja fast 3 MB. Kann allerdings auch sein, dass man da noch einiges weglassen kann.

Vielen Dank!

Markus
 

s-markus

Mitglied
WSIF verwendet die selbe lib. Deshalb habe ich das dann auch gelassen und ein Servlet geschrieben.
War auch für meine Zwecke irgendwie sinnvoller. Aber das hab ich erst im Nachhinein, als ich mich dann näher mit diesen ganzen Java Enterprise Sachen beschäftigt hatte gemerkt.

Viele Grüße,

Markus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
S Datei schreiben über Applet Netzwerkprogrammierung 8
N Applet/Applikation auf Xport laufen lassen Netzwerkprogrammierung 10
N Applet Access Denied Netzwerkprogrammierung 12
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Applet soll XML-File auf Server speichern Netzwerkprogrammierung 6
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
B FTP Applet mit FTP-Server-Zugriff sicher gestalten Netzwerkprogrammierung 12
J Applet soll Daten auf Server ablegen - einfachster Weg fuer n00bs? Netzwerkprogrammierung 4
O php - applet Kommunikation Netzwerkprogrammierung 9
B Client Server Applet keine Ahnung Netzwerkprogrammierung 3
R Applet --> PHP --> Applet Netzwerkprogrammierung 2
E Userliste für Chat Applet Netzwerkprogrammierung 4
B RTP - Applet Starthilfe Netzwerkprogrammierung 7
B Globale IP-Adresse auslesen - Java Applet Netzwerkprogrammierung 2
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
J Applet Security - java.security.AccessControlException: access denied Netzwerkprogrammierung 3
H Socket Mit Applet Verbindung zu eigener Website aufbauen Netzwerkprogrammierung 4
E Files von Server laden in Applet Netzwerkprogrammierung 5
aze Applet von Webseite aufrufen und mit diesem kommunizieren Netzwerkprogrammierung 8
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
U Server-IP in Applet ermitteln Netzwerkprogrammierung 4
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
C Applet mit Script steuern Netzwerkprogrammierung 9
A Problem mit Netzwerkprogrammierung im Applet! Netzwerkprogrammierung 10
F applet verbindung zum server Netzwerkprogrammierung 6
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
F Applet Datei Zugriff Netzwerkprogrammierung 13
M Server aus inem Applet heraus starten Netzwerkprogrammierung 4
G Applet und Netzwerkverbindungen? Netzwerkprogrammierung 2
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
K Datenaustausch zwischen Applet und JSP Netzwerkprogrammierung 4
E Applet zum Datei-Upload Netzwerkprogrammierung 3
T Image aus Applet an PHP Seite senden? Netzwerkprogrammierung 3
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
H RMI + Socket + Applet Netzwerkprogrammierung 5
N Chatprogrammierung - Applet Netzwerkprogrammierung 3
S Von Applet zu applet Netzwerkprogrammierung 7
G RMI + Applet - Verbindung nur lokal Netzwerkprogrammierung 27
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
G Applet java.net: acces denied Netzwerkprogrammierung 2
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
R Applet & Netzwerk Netzwerkprogrammierung 4
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
M Zum x-ten Mal: Problem mit NetSend-Applet Netzwerkprogrammierung 5
C Applet <> Servlet Netzwerkprogrammierung 4
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
Nuiton FTP Apache Commons: FTPClient und Sicherheit Netzwerkprogrammierung 9
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
G apache httpClient Problem. Netzwerkprogrammierung 5
D Apache Mina Serial: Error Netzwerkprogrammierung 2
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
R Apache HttpClient File Download? Netzwerkprogrammierung 3
0 Apache Commons File Object bekommen Netzwerkprogrammierung 4
W HTTP Apache HttpComponents und GZIP Netzwerkprogrammierung 2
F Apache commons net SFTPClient Netzwerkprogrammierung 5
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Apache Solr doc & pdf Upload Netzwerkprogrammierung 8
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
C apache commons net ftp bei upload unvollständig Netzwerkprogrammierung 3
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
R Apache Mina - Hilfestellung Netzwerkprogrammierung 32
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
N SFTP apache keine Verbindungaufbau möglich Netzwerkprogrammierung 6
K Login via apache httpclient Netzwerkprogrammierung 4
dayaftereh Fragen zu Apache Mina? Netzwerkprogrammierung 5
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
Kr0e Apache Mina -> await() Netzwerkprogrammierung 30
B Tomcat Apache Server Netzwerkprogrammierung 6
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
Kr0e Apache Mina Problem Netzwerkprogrammierung 2
G apache von außen zugänglich machen Netzwerkprogrammierung 5
1 Upload problem! org.apache.commons.net.ftp Netzwerkprogrammierung 3
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
B Via Java Datei zu PHP-Script auf Apache hochladen Netzwerkprogrammierung 4
A http request per socket an apache server Netzwerkprogrammierung 5
G Webserivce - Timeout in Axis - Unterschiede SO_Timeout. Netzwerkprogrammierung 3
G Java Fehlermeldung bzgl. Axis Netzwerkprogrammierung 4
G Fehlermeldung beim Erzeugen der WSDL Datei unter Axis Netzwerkprogrammierung 2
X axis stand alone-Server läuft nicht Netzwerkprogrammierung 2
A Alternative zu Tomcat, Axis, WebSphere Netzwerkprogrammierung 6
D Axis 205 Netzerk Cam Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben