# Servlet Komunikations Problem



## robb (1. Dez 2006)

Hi,

ich bin momentan dabei eine Applet-Servlet Kommunikation zu schreiben für einen Datenbank austausch.
Wenn ich versuche die Servlet Kommunikation aufzubaun wird mir folgende Exception geworfen, wozu ich nicht wirklich etwas gefunden habe:



> SCHWERWIEGEND: Allocate exception for servlet HandyInfoServlet
> java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class HandyInfoServlet with modifiers ""
> at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
> at java.lang.Class.newInstance0(Class.java:344)
> ...



Wenn ich danach dasselbe noch einmal mache kommt vom host:


> INFO: Servlet HandyInfoServlet is currently unavailable



Ich hoffe es kann mir jemand weiterhelfen.

mfg Robb


----------



## SlaterB (1. Dez 2006)

ich weiß nicht genau worum es geht, aber schaue dir doch mal

> Class org.apache.catalina.core.StandardWrapper can not access a 
> member of class HandyInfoServlet with modifiers "" 

an,

hat die Klasse HandyInfoServlet irgendwelche member = Exemplarvariablen,
die so einen Access-Fehler auslösen können?

also die nicht alle als 'public' deklariert sind?
und/ oder
public setter + getter haben?


ich behaupte nicht, dass es zu empfehlen ist, da irgendwas auf public zu setzen,
aber zum testen wäre es ja durchaus interessant,
also:
tritt der Fehler nicht mehr auf, wenn alle auf public gesetzt werden + mit set/get ausgestattet werden, falls vorhanden?

poste vielleicht auch mal das Servlet, am besten vorher verschlanken, alles raus, und nur eine Zeile drin lassen,
Weiterleitung an JSP oder so,

wenn beim Entfernen von Code der Fehler verschwindet:
an welchen Zeilen liegt es?


----------



## robb (1. Dez 2006)

Hier einmal der grobe Code von meinem Servlet:


```
import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.http.*;

public class EchoServlet extends HttpServlet {
	/**
	 * 
	 */
	public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
		try {
			response.setContentType("application/x-java-serialized-object");
			//String array vom Applet
			InputStream in = request.getInputStream();
			ObjectInputStream inputFromApplet = new ObjectInputStream(in);
			String[] str = (String[]) inputFromApplet.readObject();
			
		
			//eigene Klasse um den Input vom Applet zu verarbeiten und eine Datenbankabfrage aus dem String-Array zu realisieren
			//und die Informationen aus der Datenbank in eine Liste schreiben
			Myclass myclass=new Myclass(str);
			Vector list=myclass.getList();

			// Liste an das Applet schicken
			OutputStream outstr = response.getOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(outstr);
			oos.writeObject(list);
			oos.flush();
			oos.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
```

Kann sein, dass dort ein paar Fehler drin sind, da ich die Orginaldatei auf einem anderen Rechner liegen habe und dort erst wieder Montag rankomme.


----------



## robb (4. Dez 2006)

Damit es vielleicht ein bisschen anschaulicher wird, poste ich nochmal den Code-Schnipsel von meinem Applet wo die Kommunikation mit meinem Servlet gestartet wird. 


```
/**
	 * Get a connection to the servlet.
	 */
	private URLConnection getServletConnection()throws MalformedURLException, IOException {
		// Connection zum Servlet öffnen über Parameter im Html Tag
		URL urlServlet = new URL(getParameter("URL"));
		URLConnection con = urlServlet.openConnection();
		// konfigurieren
		con.setDoInput(true);
		con.setDoOutput(true);
		con.setUseCaches(false);
		con.setRequestProperty("Content-Type", "application/x-java-serialized-object");
		// und zurückliefern
		return con;
	}
	
	/**
	 * Methode mit der die Selektion des Benutzers an das Servlet geschickt wird und
	 * zurück wird die Liste geschickt in der die Handyinformationen stehen
	 */
	private void getHandyChoice(){
	
		try {
			// Daten an Servlet senden
			URLConnection con = getServletConnection();
			OutputStream outstream = con.getOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(outstream);
			oos.writeObject(str_selection);
			oos.flush();
			oos.close();
			// Daten vom Servlet bekommen
			InputStream instr = con.getInputStream();

			ObjectInputStream inputFromServlet = new ObjectInputStream(instr);
			vec = (Vector) inputFromServlet.readObject();
			inputFromServlet.close();
			instr.close();


		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
```



> ObjectInputStream inputFromServlet = new ObjectInputStream(instr);


Genau an dieser Stelle wird eine Exception geworfen und die Methode bricht ab, aber ich hab keine Ahnung woran es liegt.
Über ein wenig Hilfe würde ich mich freuen, denn so langsam verzweifel ich hier.

mfg Robb


----------



## robb (4. Dez 2006)

das Problem hat sich geklärt.

mfg Robb


----------

