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
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:
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:
(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
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.;
}
}
"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
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