Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Applet] HTTP-Aufruf

0 views
Skip to first unread message

Robert Kosma

unread,
Dec 13, 2002, 10:16:58 AM12/13/02
to
Hallo NG,

ich rufe aus aus einem Appletfenster ein Servlet auf (verwende Tomat 4.0.3)
Wenn ich das ganze in meiner Entwicklungsumgebung (JBuilder 7) teste,
funktioniert
diese HTTP-Get-Anfrage und in meinem Appletfenster erscheint das Ergebnis
der Datenbank-Abfrage.
Sobald ich aber das Applet im Browser öffne, erfolgt kein Zugriff auf das
Servlet (sehe ich im logfile von tomcat).

Ich habe folgende Ausgabe an der Java-Konsole:

java.lang.ExceptionInInitializerError: java.security.AccessControlException:
access denied (java.util.PropertyPermission httpclient.log read)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java
:272)
at java.security.AccessController.checkPermission(AccessController.java:399)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1278)
at java.lang.System.getProperty(System.java:599)
at
org.apache.commons.httpclient.log.LogSource.makeNewLogInstance(LogSource.jav
a:129)
at
org.apache.commons.httpclient.log.LogSource.getInstance(LogSource.java:94)
at
org.apache.commons.httpclient.HttpConnection.<clinit>(HttpConnection.java:52
2)
at pmongui.HttpGet.doGet(HttpGet.java:29)
at pmongui.TestApplet.getAppletString(TestApplet.java:66)
at pmongui.TestApplet.paint(TestApplet.java:55)
at sun.awt.RepaintArea.paint(RepaintArea.java:298)
at sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:349)
at java.awt.Component.dispatchEventImpl(Component.java:2663)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja
va:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java
:98)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
--------------------------------

Mein Applet sieht folgendermaßen aus:

package pmongui;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.io.*;
import org.apache.regexp.*;

/**
* <p>Überschrift: </p>
* <p>Beschreibung: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Organisation: </p>
* @author unbekannt
* @version 1.0
*/

public class TestApplet extends Applet {
private boolean isStandalone = false;
public static String
address="http://asterix.meineweb.de/pmonweb/servlet/mtgn.gui.DumpPmonServlet
";

//Parameterwert holen
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

//Das Applet konstruieren
public TestApplet() {
}
//Das Applet initialisieren
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Initialisierung der Komponenten
private void jbInit() throws Exception {
this.setBackground(Color.orange);
}
//Applet-Information holen
public String getAppletInfo() {
return "Applet-Information";
}
//Parameter-Infos holen
public String[][] getParameterInfo() {
return null;
}

public void paint(Graphics g) {
g.drawString(this.getAppletString(),10,20);
}

public String getAppletString() {

String out = "";

try {
URL url = new URL(address);
HttpGet get = new HttpGet(url);

InputStream is = get.doGet();
BufferedReader respStream = new BufferedReader( new
InputStreamReader(is));
String respLine = "";
RE r = new RE("(.+)");

while( (respLine = respStream.readLine()) != null ) {
if (r.match(respLine)) {
out = r.getParen(1);
}
}
respStream.close();

} catch (Exception ex) {
ex.printStackTrace();
}
return out;
}
}
-------------------
Die Klasse HttpGet folgendermaßen:

package pmongui;

/**
* <p>Überschrift: </p>
* <p>Beschreibung: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Organisation: </p>
* @author unbekannt
* @version 1.0
*/

import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;

public class HttpGet {

private URL action;

public HttpGet(URL action) {
this.action=action;
}

public InputStream doGet() {
try {
int port = action.getPort();
HttpConnection conn = new HttpConnection(action.getHost(), (port
== -1) ? 80 : port);
HttpState state = new HttpState();
GetMethod mGet = new GetMethod(action.getPath());

int statuscode= mGet.execute(state,conn); mGet.setTempDir("k");
return mGet.getResponseBodyAsStream();
}
catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}

----------------------

Möchte die Klasse Httpclient in ein Logfile schreiben und das ist vom Applet
aus nicht erlaubt?
Hat schon mal jemand von euch dieses Problem gehabt und gibt es hier
grundsätzlich ein Problem?

Danke.

Gruß,
Robert


Frank Theimer

unread,
Dec 13, 2002, 4:13:49 PM12/13/02
to

"Robert Kosma" <robert...@dts-nbg.de> schrieb im Newsbeitrag
news:atctl6$cno$1...@defiant.dts-nbg.de...

Ist das der gleiche Server, wie der, auf dem das Applet "liegt"? Wenn nicht,
dann ist es klar: Applets können Net-Verbindungen nur zu dem Server
aufbauen, von welchem sie geladen werden (ausser sie sind signiert).

HTH
Frank


Robert Kosma

unread,
Dec 16, 2002, 4:43:03 AM12/16/02
to

"Frank Theimer" <frank....@pixeldata.de> schrieb im Newsbeitrag
news:atdik0$133ka4$1...@ID-168629.news.dfncis.de...
Du hasst recht, das ist das Problem. Applet und Servlet laufen nicht auf dem
selben
Server.
Was muß ich tun um das zum Laufen zu bringen?
Wo finde ich eine Doku dazu?

Gruß,
Robert


0 new messages