Tomcat mit Servlets Problem

ThLu

Mitglied
Hallo zusammen,

ich habe ein Problem und zwar habe ich einen Service in einem Tomcat 7 deployed. Nach dem Re-Deploy meldet der Tomcat immer Speicherprobleme. Wie ich in bereits durch googeln erfahren habe, besteht das Problem darin, dass noch alte Instanzen des Services nach einem Re-Deploy vorhanden sind. Das nehme ich jetzt einfach mal hin, obwohl der Tomcat 7 Besserung versprochen hatte.
Allerdings habe ich noch ein Problem und zwar brechen meine Services alle 1-2 Tage immer mal ab, bzw. wenn ich sie über die URL aufrufe, dann kommt nach ein paar Tagen keine Antwort mehr, sondern der Ladekreis dreht sich einfach nur noch. Anfangs läuft noch alles wunderbar.

Folgenden Code benutzt ich:
(Zu Präsentationszwecken habe ich alles in Test genannt)

Servlet:
Java:
 package de.test.servlets.get;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import de.test.servlets.help.TestServlet;
import de.testrest.datalogic.Manager;

/**
 * Servlet implementation class AllCategories
 */
public class AllCategoriesGetServlet extends TestServlet {
	private static final long serialVersionUID = 1L;
	
	private de.test.get.AllCategoriesGet ref;
	private String answer;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AllCategoriesGetServlet() {
        super();
    }

    public void init() throws ServletException {
		ref = new de.test.get.AllCategoriesGet();
	}
    
    public void destroy() {
    	ref = null;
    	answer = null;
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("application/xml;charset=UTF-8");
		response.setHeader("Content-Disposition", "attachment; filename=AllCategories.xml");

		answer = ref.loadAllCategories();
		
		PrintWriter out = response.getWriter();
		out.println(answer);
	}

}

Meine Zwischenschicht:

Java:
package de.test.get;

import java.sql.SQLException;
import java.util.ArrayList;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import de.testrest.datalogic.ParameterItem;
import de.testrest.datalogic.Manager;

@Path("/GET/AllCategories")
public class AllCategoriesGet {

	// This method  is called if XML is request
	@GET
	@Produces(MediaType.TEXT_XML)
	public String loadAllCategories(){
		String testString = Manager.getInstance().loadAllCategories();
		Manager.getInstance().getDb_handle().close();
		return testString;
	}
	
}

In der Logik wird dann nur der testString über eine Datenbankabfrage gefüllt.

Erkennt ihr irgendwas an dem Code was das Problem auslösen könnte?

Vielen Dank.

Mit freundlichem Gruß,
Thomas.
 

JanHH

Top Contributor
Kann das mit den Speichereinstellungen zusammenhängen? Kenen das Problem vom JBoss auch. Vor alle "permGen Space" ist ein Problem. Hat die java-VM ausreichend Speicher zur Verfügung? Könnte mir vorstellen dass der Tomcat mit den default-Einstellungen da zu knapp ausgestattet ist.
 

ThLu

Mitglied
Danke schön für die Antworten.
Ich werde sobald das Problem wieder auftritt die Logs hier posten.

Viele Grüße,
Thomas.
 

DerFeivel

Bekanntes Mitglied
Ich hab hier gerade keine Möglichkeit das zu testen.

Allerdings würde mich ad-hoc mal brennend interessieren, was die Jax-RS annotationen an deiner Zwischenschicht sollen.

Wenn du jetzt noch eine Application-Unterklasse oder eine entsprechend konfigurierte web.xml hast, hast du mit einer JAXRS-Endpunkt-Implementierung (wie sie deine AllCategoriesGet dann darstellt) ja dann zwei Servlets.
Wenn dann das eine Servlet (deine eigentliche Servlet-Klasse) deinen JAX-RS Endpunkt direkt aufruft, bereitet mir das gerade irgendwie unbehagen. Sprich ich kann mir vorstellen, dass deine Speicherprobleme daher resultieren.
 

jwiesmann

Bekanntes Mitglied
Vielleicht hilft es schon, deinen Stream zu schließen.
Java:
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
try {        

        response.setContentType("application/xml;charset=UTF-8");
        response.setHeader("Content-Disposition", "attachment; filename=AllCategories.xml");
 
        answer = ref.loadAllCategories();
        

        out.println(answer);
} finally {
 out.close();
}  
    }

Gruß!
 

ThLu

Mitglied
@JanHH: Genügend Speicher ist definitiv vorhanden.

@DerFeivel: Ich hatte damals ein Tutorial gemacht, da wurden die Annotationen verwendet. Ich habe eine zusätzliche web.xml geplegt die das Mapping der Servlets übernimmt. Ich habe die Annotationen jetzt mal rausgeworfen, ob es was bringt erfahre ich hoffentlich bald :)

@jwiesmann: Deinen Tipp habe ich auch berücksichtigt. Danke.

Danke schön für die ganzen Antworten.

Ich habe jetzt noch etwas gemacht und zwar habe ich mehrere Services die die gleichen jars verwenden. Ich habe jetzt alle jars mal in den Tomcat/lib gepackt. Ich habe geteilte Meinungen dazu gelesen im Internet. Die einen sagen "Auf keinen Fall" da dann alle darauf zugreifen und eventuell manche jars nicht für mehrere Anwendungen ausgelegt sind, die anderen sagen "Auf jeden Fall" da der Tomcat dann seine Libraries verwaltet. Was meint ihr?

Viele Grüße,
Thomas.
 

HimBromBeere

Top Contributor
Also ich würde immer Bibliotheken dahin legen, wo sie gebraucht werden, um mal im JAVA-Sprech zu bleiben: so privat wie möglich. Auerßdem ist das Programm so leichter portierbar, weil du einfach deine gesamte WebApp anpacken und kopieren kannst, anstatt erstmal überall nach etwaigen Ressourcen zu suchen. Aber "auf KEINEN Fall" würd ich auch nicht gleich sagen... es ist - soweit ich weiß - erstmal nicht schädlich :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Wartezeit nach Tomcat start wegen Servlets zu hoch Web Tier 2
ruutaiokwu Servlet Tomcat Versionsproblem? Web Tier 4
I JSF JSF, Tomcat, Server Faces und maven Web Tier 3
feinperligekohlensaeure JSF JSF + Tomcat 9 | HTTP Status 404 |(com.sun.faces.config.ConfigureListener?) Web Tier 1
R Tomcat - java.lang.OutOfMemoryError: PermGen space Web Tier 0
puba mit JDev entwickelter WS auf Tomcat deployen Web Tier 2
R JSF Tomcat 7 & JSF - UnsupportedOperationException Web Tier 1
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
S Tomcat 8.0.9 logging Web Tier 0
S Servlet Tomcat 8.0.9 logging Web Tier 13
D JSP Anfängerfrage - Ändern von JSP / Tomcat Web Tier 4
R Tomcat 7 und SSL Web Tier 3
J JSP Web Applikation auf virtuellem Tomcat Server Web Tier 1
T JSF in Eclipse mit Tomcat Web Tier 0
S JSF Tomcat in Eclipse einbinden (JSF) Web Tier 0
G Magnolia CMS - jedes mal Tomcat restart Web Tier 7
M tomcat anwendungsabhängige konfigdateien Web Tier 6
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
C Tomcat wirft keine ViewExpiredException Web Tier 8
C Tomcat + Eclipselink = NotSerializable Exception? Web Tier 2
M JSP Problem beim deployen auf Tomcat Web Tier 2
A Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat Web Tier 5
B JSF JSF1.1 @Tomcat 5.5 für ein neues Projekt Web Tier 18
P JSF Umgebungsvariablen bei Tomcat-Start setzen Web Tier 4
D Tomcat/Struts2 Benutzer bestimmt Name der URL Web Tier 2
T Tomcat: Packete dynamisch auslesen und Klassen erzeugen Web Tier 3
S Servlet Problem mit Tomcat Web Tier 3
M Classpath für JPA in Tomcat Webapp: Wie konfigurieren? Web Tier 4
reibi Tomcat : Änderbare Config-Files Web Tier 5
reibi Servlet Tomcat : Display name und version setzen Web Tier 3
JCODA Tomcat ohne Fenster starten Web Tier 5
P Eclipse zeigt Errors an, die auf Tomcat nicht auftreten Web Tier 2
B Tomcat 6 ergibt Fehler - java.net.SocketException Web Tier 2
L Services in Tomcat einbinden? Web Tier 2
B JSF Tomcat Windows Linux equals Problem Web Tier 3
N JSP org.apache.tomcat cannot be resolved to a type InstanceManager cannot be resolved to a type Web Tier 4
S Tomcat 7, Struts, JPA baut keine Verbindung auf Web Tier 13
M Geschwindigkeit von Tomcat / JavaWebanwendungen Web Tier 3
D Probleme mit Tomcat Web Tier 3
M Tomcat 6 Umlaut Probleme Web Tier 2
F No Factories configured for this Application - Myfaces mit Tomcat Web Tier 1
T jsf Tobago in Tomcat classpath aufnehmen Web Tier 2
A Beispiel wirft Fehler. JSF 2.0 / Tomcat / Eclipse Web Tier 2
J Tomcat-Server mit JSF auf Eclipse einrichten Web Tier 7
F umzug von tomcat 4 auf tomcat 6 Web Tier 2
J tomcat webapp restarten Web Tier 2
ruutaiokwu tomcat autodeploy Web Tier 7
I Tomcat aktualisiert CSS - Datei nur ab und zu Web Tier 4
T Tomcat-Projektverzeichnis Web Tier 13
E JSF Applikation läuft nicht über Tomcat Web Tier 3
F JApplet in Tomcat-Umgebung funktioniert mal wieder nicht ... Web Tier 8
T Tomcat, JSP, UTF-8 und URL-Codierung Web Tier 4
A Hat Tomcat einen Cache? Web Tier 5
S Tomcat Heap Memory erhoehen..? Web Tier 4
I Rich Faces nur mit JBoss oder auch Tomcat? Web Tier 7
S Tomcat / Eclipse Probleme Web Tier 2
T Tomcat Projekt ohne Eclipse starten Web Tier 11
A Tomcat - JSP läuft nicht Web Tier 2
reibi access.log in Tomcat ... ist das möglich? Web Tier 2
R Fehler 1053 beim Beenden von Tomcat Web Tier 25
A Tomcat - JSP ausführen Web Tier 8
M Tomcat - Mehrere Verzeichnisse für die jsp Web Tier 12
thE_29 Tomcat - Applications(Context) bekommen Web Tier 19
A Tomcat: beim Start des Servers einmalige Aktion aufrufen (Problem gelöst) Web Tier 2
T Hibernate, Debuggingparameter Tomcat Web Tier 3
A JDBC in Tomcat einbinden Web Tier 3
P Tomcat funktioniert nicht so wie er sollte Web Tier 11
C Tomcat total memory Web Tier 11
C Apache-Tomcat Web Tier 13
F ssl, tomcat und jsp anwendungen Web Tier 5
G Tomcat 4.1 Experimente 8) Web Tier 3
S Tomcat JSP context.xml - Standartpfad einstellen Web Tier 3
J Fehler Tomcat/JSP findet Methode nich Web Tier 3
jann Tomcat und Kompression Web Tier 9
Q tomcat konfiguration - rewrite Web Tier 3
A TomCat will nicht - Wieso? Web Tier 5
Q Auth. per Tomcat Web Tier 4
O kurze Frage zur Tomcat Installation Web Tier 2
G Probleme mit Tomcat Web Tier 14
G Tomcat findet angeblich die Datei nicht. Web Tier 8
J Tomcat - web.xml und package . Web Tier 4
L JSP Tomcat Login Web Tier 6
G SCHWERWIEGEND: NullPointerException bei Tomcat Web Tier 4
U Java Application auf Tomcat Web Tier 5
Y JSF - Exception bei Tomcat Start Web Tier 4
O Source-Code vom Tomcat kompilieren lassen Web Tier 6
T Model2-Architektur Servlets Web Tier 0
D Servlet EJBs in Servlets verwenden? Web Tier 4
S JSF, JSP, Servlets - ich verstehe nur noch Bahnhof Web Tier 4
M Best practice JSP und Servlets Web Tier 1
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
T Einsteigerfragen zu Servlets/Webprogrammierung mit Java Web Tier 11
C Kommunkation Servlets/Browseraufruf Servlet Web Tier 4
U Servlet Allgemeine Frage zu Servlets Web Tier 2
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
R Daten Streamen mit Servlets. Web Tier 4
J web.xml / Erreichbarkeit von Servlets Web Tier 6
F Richtiges Session Management mit Servlets Web Tier 4
S Architektur-Problem? 2 Servlets, ein Objekt Web Tier 4
S Ein ControllerServlet für andere Servlets - Sinnvoll oder nicht? Web Tier 34

Ähnliche Java Themen

Neue Themen


Oben