JSP Warum nicht ThreadSafe?

ben_

Mitglied
Hallo,

ich habe ein Problem mit einer JSP-Seite die, je nach Parameter-Aufruf, die application-Variable des Tomcats via getAttribute und setAttribute ändert. Da die JSP von mehreren Usern aufgerufen werden kann, habe ich Sie über die Direktive
Code:
<%@page isThreadSafe="false" %>
als NICHT ThrearSafe deklariert. Nach meinem Verständnis müssten die einzelnen User-Request dann sequenziell abgearbeitet werden. Da die Anwendung nicht unter hoher Last steht, wäre dies soweit ok.

Dennoch bekomme ich im Logfile (catalina.out) folgende Fehlermeldungen in unregelmäßigen Abständen angezeigt:

Code:
SEVERE: Servlet.service() for servlet [jsp] in context with path [/foobar] threw exception [java.util.ConcurrentModificationException] with root cause
java.util.ConcurrentModificationException
...

Hier kurz der Code der ausgeführt wird um die application-Variable zu bearbeiten:

Java:
...
       HashMap< String, Page > mapMonibel;
	if (application.getAttribute("monibel"+mandant) == null) {
		mapMonibel = new HashMap<String, Page>();
	} else {
		mapMonibel = (HashMap< String, Page>)application.getAttribute("monibel"+mandant);	
	}
	Page seite = new Page(prooffile);
	mapMonibel.put(monitore[0], seite);
	application.setAttribute("monibel"+mandant, mapMonibel);
 ...

Hat jemand von euch vielleicht eine Idee wo hier das Problem liegen könnte?

Besten Dank!

Gruß,
Ben
 
N

nillehammer

Gast
Die
Code:
java.util.ConcurrentModificationException
kommt meist, wenn man über eine Collection (hier evtl. das Entry-Set?) iteriert (egal ob foreach oder mit Iterator) und gleichzeitig Modifikationen an dem Iterator vorbei ausführt. Das sieht man in dem von Dir gezeigten Code zwar nicht, aber evtl. kommt es ja an anderer Stelle vor. Oder an anderer Stelle wird iteriert und das kollidiert mit dem put an der gezeigten Stelle.
 

ben_

Mitglied
Du hast Recht! Es gibt tatsächlich noch eine Stelle die über einen foreach durch die Collection sortiert. Die entsprechende Klasse wird über einen Thread alle 10 Sek. ausgeführt und aktualisiert die in der application-Var. enthaltenen Informationen. Der entsprechende Code-Abschnitt ist aber synchronisiert, sollte der Fehler nicht genau dadurch dann verhindert werden?

Java:
...
synchronized (mapMonibel) {
   // Durchlaufe für jede Mobnitorbelegung 
   for (java.util.Map.Entry< String, Page > entry : entries) {    		
      String monitor	= entry.getKey();
      Page seite		= entry.getValue();				
      if (rs.getString("prooffile").equals(seite.getProoffile()) ) {		      
         seite.setProofzeit(rs.getString("pzeit"));
	 mapMonibel.put(monitor, seite);					
	 appVar.setAttribute("monibel"+sMandant, mapMonibel);		
      }					 
   }		
}
...

Gruß,
Ben
 

tfa

Top Contributor
ConcurrentModificationException hat grundsätzlich erstmal nichts mit Threading zu tun. Du darfst halt eine Collection nicht verändern, während du über sie iterierst. Du könntest z.B. eine Kopie der Collection anlegen und über die iterieren.
 

jwiesmann

Bekanntes Mitglied
Du hast Recht! Es gibt tatsächlich noch eine Stelle die über einen foreach durch die Collection sortiert. Die entsprechende Klasse wird über einen Thread alle 10 Sek. ausgeführt und aktualisiert die in der application-Var. enthaltenen Informationen. Der entsprechende Code-Abschnitt ist aber synchronisiert, sollte der Fehler nicht genau dadurch dann verhindert werden?

Java:
...
synchronized (mapMonibel) {
   // Durchlaufe für jede Mobnitorbelegung 
   for (java.util.Map.Entry< String, Page > entry : entries) {    		
      String monitor	= entry.getKey();
      Page seite		= entry.getValue();				
      if (rs.getString("prooffile").equals(seite.getProoffile()) ) {		      
         seite.setProofzeit(rs.getString("pzeit"));
	 mapMonibel.put(monitor, seite);					
	 appVar.setAttribute("monibel"+sMandant, mapMonibel);		
      }					 
   }		
}
...

Gruß,
Ben

Nein, da du an zwei Stellen operierst.
Sehr wahrscheinlich versuchst du in ein und dieselbe Map zu schreiben (Siehe in deinem ersten Post)
während der Thread versucht diese Map zu ändern bzw. darüber iteriert.
Und da dies nicht möglich ist, bekommst du die genannte Exception.
Das bedeutet eigentlich, dass du dir nochmal Gedanken über die Architektur machen solltest.
Vielleicht erklärst du kurz, was genau mit dem von dir geschildertem Verhalten erreicht werden soll. Es gibt bestimmt "schönere" Lösungen.

Gruß
 

ben_

Mitglied
Ich iteriere über die Collection weil ich Werte ändern möchte. Wenn ich jetzt eine Kopie anlege und die Collection entsprechend aktualisiere, kann es in der Zwischenzeit eine Veränderung in der Elementenanzahl innerhalb der Collection gegeben haben. Dadurch kann ich die Original-Collection ja nicht einfach durch die Kopie ersetzen.

Hast Du hier vielleicht noch einen Tipp?

Gruß,
Ben
 

ben_

Mitglied
Die Problemstellung sieht folgendermaßen aus:

- Verschiedene User können über eine JSP Werte in dieser Collection ändern, löschen, hinzufügen oder Abfragen
- Durch einen Thread werden die Werte dieser Collection in einem festen Intervall mit neuen Werte aktualisiert

Gruß,
Ben
 
M

maki

Gast
Zeig mal den ganzen JSP Code.

isThreadSafe etc. hat sich nicht etababiliert und sollte unbedingt gemieden werden, damit ist die WebApp auch nicht Threadsicher, denn da gehört viel mehr dazu, mich interessiert zB. ob du in deiner JSP Instanzvariablen nutzt.

Alles in allem würde ich emfpehlen das Konzept zu überdenken und anzupassen.
 

jwiesmann

Bekanntes Mitglied
Das heißt, dass jedes mal, wenn du die exception bekommst, Werte verloren gehen, da du gerade in dem Thread drüber iterierst und somit die Änderung / Aktualisierung der User nicht durchgeführt wurde.
Das kann zu Fehlern bzw. fehlerhaften Daten führen.

Ein hässlicher workaround währe einfach eine konventionelle Schleife zu benutzen:
Java:
int entries = entry.size();
 for (int i=0;i<entries;i++) {     
    entry = entry.get(i);
...
 }

Hat aber genau den gleichen Nachteil, dass Daten fehlerhaft vorliegen können und ggf. bekommst du eine
ArrayOutOf... exception, da die Map ggf. nicht mehr über alle Einträge verfügt, oder ein Eintrag fehlt, da der in der Zwischenzeit von einem User hinzugefügt wurde.
Die einfachste (jedoch bin ich immer noch der Meinung, dass du das Konzept überdenken solltest) wäre eine weitere Application-Variable zu setzten und diese abzufragen... bsp.
Java:
application.setAttribute ("modifyMap", true);
// userzeugs aus dem ersten post
application.setAttribute ("modifyMap", false);

Im Thread kannst du dann prüfen ob die Variable gesetzt ist oder nicht...

Java:
if (Boolean.TRUE.toString().equals(application.getAttribute("modifyMap"))) {
for (java.util.Map.Entry< String, Page > entry : entries) { 
....

Ist aber alles nicht wirklich schön....
Am einfachst wäre es natürlich eine Datenbank zu benutzen und einfach in eine Tabelle zu schreiben
 

ben_

Mitglied
Die Daten hatte ich vorher in einer DB geschrieben. Jedoch muss man beachten, dass das Auslesen der Werte via Ajax von mehreren Client's aus automatisch durchgeführt wird. Dadurch kommen mehreren Reqeust pro Sek. zusammen die bei mir die DB zum Absturz gebracht hatten (too many connections). Das Speichern und Abfragen über den Tomcat-Speicher war dann die bessere Alternative. Heute würde ich das ganze wohl eher über javascript websocket's lösen.

Hmm ... mal schauen was ich jetzt mache.

Besten Dank jedenfalls für eure Tipps.

Gruß,
Ben
 
S

SlaterB

Gast
wenn du schon
synchronized (mapMonibel) {
}
an der einen Stelle hast, musst du es nur noch bei der anderen auch geeignet verwenden und fertig,
das ist doch recht eingängig

<%@page isThreadSafe="false" %>
mag die eine JSP in Reihenfolge bearbeiten oder auch nicht, ein synchronized (mapMonibel) ist das aber offensichtlich nicht,
 

ben_

Mitglied
@SlaterB: Warum ist das wichtig? Ich erzeuge die Collection mapMonibel doch neu mit den Werten der apllication-Var. von Tomcat?

Java:
...
HashMap< String, Page > mapMonibel;
mapMonibel = (HashMap< String, Page>)application.getAttribute("monibel"+mandant);	
Page seite = new Page(prooffile);
mapMonibel.put(monitore[0], seite);
application.setAttribute("monibel"+mandant, mapMonibel);
...

Gruß,
Ben
 
S

SlaterB

Gast
im ersten Posting wurde nicht unbedingt neu erzeugt, auch aus dem ApplicationContext geladen,
es klang bisher so als wenn an anderer Stelle dieselbe Map im Gebrauch ist

was genau letztlich das Problem ist, ist bisher vielleicht unbekannt und natürlich zunächst zu klären, vorher kann man nichts lösen,
vor allem auf welches Objekt sich die Fehlermeldung bezieht und dann eben ganz genau loggen wer da auch zeitgleich mit arbeitet,
mag mit JSP erhöht schwierig sein, dann eben die Standardregel:

eine JSP macht nichts anderes, als Daten anzuzeigen, ein Erzeugen von 'Page', ein Einfügen, das ist strenggenommen undenkbar,
jeder Request kann erst von einem Servlet bzw. vergleichbarer normaler Java-Klasse bearbeitet werden,
dann allein zur Ergebnisdarstellung an eine JSP verweisen,
diese auch möglichst ohne Java-Code, das Lehrbuch zeigt sicherlich andere Vorschäge, HTML, bestimmte Tag-Libraries usw.

wenn Daten zur Anzeige evtl. woanders zeitgleich unter Änderungsgefahr stehen, dann notfalls für die JSP kopieren
 

ben_

Mitglied
Und genau das ist mein Problem! Ich finde einfach nicht heraus wo genau das Problem liegt. Lange Zeit habe ich den Thread im Verdacht gehabt, aber das scheint sich nicht zu bestätigen.

Gruß,
Ben
 
S

SlaterB

Gast
bekommst du eigentlichen einen StackTrace wie diesen hier?
Developers - ConcurrentModificationException in jsp page

Zeilennummern in JSP sind immer schwer, einer der Gründe warum JSP ungeeignet ist,
aber allein die vollständige Auflistung an Klassen könnte schon etwas weiterhelfen

ConcurrentModificationException fliegt praktisch nur bei Iteraoren, beim Durchlauf einer Collection,
das add() kann es glaube ich gar nicht sein, insofern der Code im ersten Posting fraglich, die Exception liegt noch weit im Dunkeln
 

ben_

Mitglied
Hmm. Guter Hinweis das werde ich gleich prüfen.

Hier ist eine komplette Fehlermeldung:

Code:
SEVERE: Servlet.service() for servlet [jsp] in context with path [/foobar] threw exception [java.util.ConcurrentModificationException] with root cause
java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
	at java.util.HashMap$EntryIterator.next(Unknown Source)
	at java.util.HashMap$EntryIterator.next(Unknown Source)
	at org.apache.jsp.monibel_jsp._jspService(monibel_jsp.java:114)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
 
S

SlaterB

Gast
du suchst vielleicht schon selber, aber lieber noch unnötig erwähnt:
weißt du was monibel_jsp ist, kannst du das notfalls komplett posten?
so wie du es gebaut hast, evtl. auch das kompilierte monibel_jsp.java, falls sich das auf der Festplatte finden läßt,
ist irgendwo direkt von deiner Seite aus das entrySet() einer Map oder sonst ein Durchlauf, eine Schleife vorhanden?

ein indirekter Aufruf etwa über eine Suche in der Map oder irgendein Tag oder etwas intern im ApplicationContext scheint nicht in Frage zu kommen
 

ben_

Mitglied
Hier die Datei monibel.jsp:

Interessant sollten die Zeilen 46-83 sein. Darin muss meiner Meinung nach der Fehler sein.

Java:
<%@page language="java"%>
<%@page import="java.util.*"%>
<%@page import="de.foo.bar.*,org.json.simple.*"%>
<%@page contentType="application/json; charset=utf-8"%>
<%@page isThreadSafe="false" %>
<%
String seiteParam   	= request.getParameter("seite");
String prooffile   		= request.getParameter("prooffile");
String mandant   		= request.getParameter("mandant");
String monitore[]  	  	= request.getParameterValues("m"); 
String aktion 			= request.getParameter("a"); 

//-----------------------------------------------------------------
// aktuelle Monitorbelegung loeschen
//-----------------------------------------------------------------
if ("al".equals(aktion)) {
	application.removeAttribute("monibel"+mandant);
}
//-----------------------------------------------------------------
// aktuelle Monitorbelegung fuer Adminclient
//-----------------------------------------------------------------
else if ("ba".equals(aktion))  
{
	JSONArray list = new JSONArray();
	if (application.getAttribute("monibel"+mandant) != null ) {
		HashMap< String, Page > mapMonibel = (HashMap< String, Page>)application.getAttribute("monibel"+mandant);			  			  	
		Set<java.util.Map.Entry<String, Page >> entries = mapMonibel.entrySet();							 
		for (java.util.Map.Entry< String, Page > entry : entries) {			    		
			String monitor  = entry.getKey();
			Page seite 		  = entry.getValue();
			JSONObject jsonObj = new JSONObject();
			jsonObj.put("seite", seite.getSeitenname() );
			jsonObj.put("proofzeit", seite.getProofzeit());
			jsonObj.put("prooffile", seite.getProoffile() );
			jsonObj.put("monitor", monitor );	
	  		list.add ( jsonObj );
		}		
	} 
	out.println(list);
	long lZeitInMS = System.currentTimeMillis();
	application.setAttribute("lastAdminAnswer"+mandant, lZeitInMS);
} 
//-----------------------------------------------------------------
// aktuelle Monitorbelegung fuer Client auslesen
//-----------------------------------------------------------------
else if ("bc".equals(aktion)) { 	
	JSONArray list = new JSONArray();
	if (application.getAttribute("monibel"+mandant) != null ) {
		HashMap< String, Page > mapMonibel = (HashMap< String, Page>)application.getAttribute("monibel"+mandant);			  			  	
		Set<java.util.Map.Entry<String, Page >> entries = mapMonibel.entrySet();							 
		for (java.util.Map.Entry< String, Page > entry : entries) {			    		
			String monitor  = entry.getKey();
			Page seite 		  = entry.getValue();
			JSONObject jsonObj = new JSONObject();
			jsonObj.put("seite", seite.getSeitenname() );
			jsonObj.put("proofzeit", seite.getProofzeit());
			jsonObj.put("prooffile", seite.getProoffile() );
			jsonObj.put("monitor", monitor );	
			list.add ( jsonObj );
		}		
	} 
  	out.println(list);
  	// letzte Reaktion des Clients
  	application.setAttribute("lastClientAnswer"+mandant + "_" + request.getRemoteHost() + ":" + request.getRemoteAddr(), System.currentTimeMillis());
}
//-----------------------------------------------------------------
// 	Monitorbelegung setzen oder aktualisieren
//-----------------------------------------------------------------	  
else if ("ms".equals(aktion))
{ 
	// init der HashMap der Obj. vom Typ Monibel
	// KEY: M1 ; VALUE: monibel(prooffile, 12:50h)
	HashMap< String, Page > mapMonibel;
	if (application.getAttribute("monibel"+mandant) == null) {
		mapMonibel = new HashMap<String, Page>();
	} else {
		mapMonibel = (HashMap< String, Page>)application.getAttribute("monibel"+mandant);	
	}
	Page seite = new Page(prooffile);
	mapMonibel.put(monitore[0], seite);
	application.setAttribute("monibel"+mandant, mapMonibel);
	
}
//-----------------------------------------------------------------
// 	Aktualisiserungszeit fuer den client auslesen
//-----------------------------------------------------------------	  
 else if ("ca".equals(aktion))
{
	if (application.getAttribute("lastAdminAnswer"+mandant) == null) {
		long lLastAdminAnswer = 1000L;
		application.setAttribute("lastAdminAnswer"+mandant, lLastAdminAnswer);
		JSONObject jsonObj = new JSONObject();
		jsonObj.put("refreshtime",10000);				
		out.println(jsonObj);	
	} else {
		long lLastAdminAnswer  = (Long) application.getAttribute("lastAdminAnswer"+mandant);
		long lZeitInMS = System.currentTimeMillis();
		long lZeitspanne = lZeitInMS - lLastAdminAnswer;
		JSONObject jsonObj = new JSONObject();
		if (lZeitspanne > 10000) {
			// 1 sek.			
			jsonObj.put("refreshtime",10000);
		} else {
			// 10 sek.
			jsonObj.put("refreshtime",1000);
		}
		out.println(jsonObj);	
	}
} 
%>
 
S

SlaterB

Gast
in Zeile 28 wird auch iteriert, die Code-Verdopplung ist an sich bedenklich

und wie gesagt allgemein völlig verfehlt in einer JSP, du kannst das alles in Servlets machen,
maximal die fertigen Listen übergeben und in der JSP dann nur die Ausgabe a la
> out.println(list);

aber gut, das lernt man mit der Zeit oder gewöhnt sich an diesen Stil,
IDE-Unterstützung zu Tippfehlern usw. hat man in der JSP nicht, oder?
das ist ja wie in einem Texteditor zu schreiben, jedenfalls in meiner Zeit vor einigen Jahren ;)

--------

<%@page isThreadSafe="false" %>
gibt auch hier sicher maximal für andere Aufrufe derselben Seite Sicherheit,
nicht falls HashMaps woanders verwendet werden,

grundsätzlich ist die Sicherheit simpel, wenn auch aufwendig:
synchronized (mapMonibel) {
}
um die jeweilige Verwendung einer Map drumherum, wie du es im Posting #3 hast,
und zwar an allen Stellen im Programm, die derartige Maps verwenden,
dann kann normalerweise nichts passieren

komplexere Modelle sind denkbar, schwieriger wirds auch wenn verschiedene gefährdete Objekte gleichzeitig zu verwenden sind..,
aber man muss ja nicht alles auf einmal machen (ich will auch nicht behaupten dass ich jetzt groß mehr erzählen könnte ;) )
 

ben_

Mitglied
Das ganze ist wirklich nicht nach Lehrbuch aufgebaut. Da geben ich Dir Recht. Mir war es nur wichtig, dass ich ohne Neustart von tomcat während des Betriebs Änderungen am Quellcode vornehmen kann. Dies geht, soweit ich weiß, nur bei JSP-Seiten. Die Unterstützung in den aktuellen IDE's ist mittlerweile sehr gut.

Die Code-Redundanz habe ich entfernt, da war ich wohl etwas betriebsblind. Danke für den Tipp!

Gruß,
ben
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Codierung im Frontend funktioniert nicht richtig Web Tier 2
hjpsoft JSP <TEXTAREA>-Tag unterstützt EL-Variablen nicht Web Tier 7
krgewb Base64 funktioniert nicht, aber btoa funktioniert Web Tier 10
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
C JSP data wird nicht angezeigt Web Tier 6
M webapp controller funktioniert nicht Web Tier 3
Psypsy Spring Thymeleaf Layer werden nicht angezeigt. Web Tier 0
J Https Verknüpfung funktioniert nicht Web Tier 0
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
K Vaadin Projekt Funkioniert nicht... Web Tier 1
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
R JSF selectOneListbox speichert Value nicht. Web Tier 1
W Tabelle wird nicht aktualisiert Web Tier 8
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
A JSF String wird nicht angezeigt Web Tier 2
S JSF CSS wird gefunden aber inhaltlich nicht angewendet Web Tier 2
FINF_AW_Alex EJB - property nicht vorhanden Web Tier 6
R JSF Bilder aus CSS Datei werden nicht angezeigt. Web Tier 2
F JSF Bean funktioniert nicht immer.. Web Tier 3
C JSF JSF Daten aus Klasse werden nicht angezeigt Web Tier 4
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
R JSF ManagedProperty wird nicht erstellt Web Tier 1
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
L error-page mit ui:composite funktioniert nicht Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
D JSF DataTable konvertiert Felder nicht Web Tier 1
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
L JSF Composit Component mit ajax funktioniert nicht. Web Tier 4
M fileUploadListener geht nicht wenn Element zur Laufzeit gerendert wird Web Tier 2
Phash Link geht nicht Web Tier 4
S setInterval() will nicht Web Tier 2
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
G GWT 404 - Servlet nicht gefunden Web Tier 6
H Servlet lässt sich nicht deployen Web Tier 7
M rendered ruft eine Methode auf, andere aber nicht Web Tier 15
M System-Event in der faces-config.xml klappt nicht Web Tier 15
J JSF BigInteger nicht null sondern 0 Web Tier 3
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
F JSF CSS Verschachtelung wird nicht abgebildet Web Tier 2
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
D JSF a4j:support wird nicht gefunden Web Tier 2
D JSF cellpadding oder cellspacing funktioniert nicht Web Tier 4
xehpuk JSF 404 statt 500 bei nicht existenter JSF-Seite Web Tier 7
W JSF Login funktioniert nicht Web Tier 12
K Neue Entitäten werde nicht angezeigt Web Tier 4
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
A JSF WebappClassloader.modified() aktualisiert Klassen nicht Web Tier 2
A JSF Rücksicht auf nicht eingeschaltetes JavaScript nehmen Web Tier 2
T JSF wird nicht ausgeführt Web Tier 4
R RadioButton nicht disabled Web Tier 5
J @Named Notation funktioniert nicht Web Tier 3
aze JSF CommandButton:Action wird nicht ausgeführt Web Tier 2
P JSF Netbeans 7.1.1 unterstützt JSF nicht? Web Tier 2
T RichFaces will nicht funktionieren :( Web Tier 2
L Applet kann unter WEB-INF/classes nicht gefunden werden Web Tier 10
H JSF ActionListener wird ausgeführt, aber ändert den Wert nicht. Web Tier 7
R JSF Beans werden nicht ausgeführt Web Tier 4
D richTable sort funktioniert nicht Web Tier 2
L JSF Beispiel wird nicht ausgeführt Web Tier 2
D Fehler: Cookies nicht gesetzt Web Tier 5
A Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat Web Tier 5
Dit_ JSP Überprüfen ob Benutzer eingeloggt ist oder nicht | SessionSicherheit Web Tier 7
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
B JSF HtmlCommandButton --- Action wird nicht aufgerufen Web Tier 2
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
NoXiD JSF h:selectOneMenu - änderungen nicht übernommen Web Tier 14
C JSON-Antwort an Javascript geht nicht Web Tier 7
H Servlet Apache Geronimo: Servlet nicht erreichbar Web Tier 2
P JSF AJAX render wird nicht ausgeführt Web Tier 4
P SelectOneMenu liest Daten nicht ein Web Tier 7
E JSF JSF findet Property im ManagedBean nicht Web Tier 5
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
D Fileupload in GWT funktioniert nicht Web Tier 10
B JSF Login authentication schaffe ich nicht Web Tier 2
P Eclipse zeigt Errors an, die auf Tomcat nicht auftreten Web Tier 2
F Property nicht gefunden (trotz getter und setter) Web Tier 3
B JSF Servlectexception: Verwalteter Bean "..bean" kann nicht erstellt werden Web Tier 2
C JSF JSF 2 - Anwendung lädt nicht Web Tier 4
S JSP lässt sich nicht ausführen Web Tier 2
I JSF Daten aus Formular werden nicht übernommen Web Tier 6
F Property in ManagedBean nicht gefunden? Web Tier 3
T JSF @ManagedBean nicht erkannt Web Tier 3
A JSF Weiterleitung funktioniert einfach nicht Web Tier 2
R Message Bundles werden nicht geladen Web Tier 2
J JSF JSF2.0 template wird nicht gerendert!? Web Tier 2
D [GWT] Celltable SimplePager funktioniert in 2.2 nicht Web Tier 1
T JSF Dependency-Injection funktioniert offenbar nicht - warum? Web Tier 4
D JSP Programm geht einfach nicht in If-Schleife rein Web Tier 7
J JSP-Seite kann nicht aufgerufen werden Web Tier 14
S Bean Validation (JSF 2.0) funktioniert nicht. Web Tier 4
S Ein ControllerServlet für andere Servlets - Sinnvoll oder nicht? Web Tier 34
C GWT: RPC wird nicht gefunden Web Tier 3
D JSF 2.0 Navigationsregel funktioniert nicht Web Tier 2
M JSF findet den Tag <f:metadata> nicht Web Tier 6
M JSF: CommandButton übergibt den Parameter nicht Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben