Problem dem Zaehler in mein Java - Code

Status
Nicht offen für weitere Antworten.

tom_cruise

Neues Mitglied
Hallo, ich habe ein Problem ,dass mich wirklich stört , deine Hilfe wäre mir unvergesslich. Mein Problem ist folgendes : Ich muss für unsere Firma ein Programm schreiben , das unsere MySQL -Datenbank aktualisiert.Auf unsere firmeninterne Web-Server laufen unterschiedliche Webseiten von unseren Kunden . Mein Programm soll zählen wie oft jede Webseite aus unserem Server aufgerufen wird, und das Ergebnis in eine MySQL - Datenbank speichern .Ich habe dafuer eine Klasse SessionObject implementiert,die die aufgerufene Seite und die dazugehörige Session ID über die Attribute page und sessionID speichert , eine Klasse SessionArray die alle aufgerufene Seiten und Session ID in einem Puffer(Array) anlegt, und die Daten in die Datenbank über einen Thread schreibt . Die Klasse SessionArray wird von einem Filter LiveStatReceiver ausgeführt .In der Klasse LiveStatReceiver werden die folgenden Variablen deklariert counter(speichert aktuelle Grösse des Arrays) , pagecounter(speichert wie oft eine Seite im Array vorhanden ist) , objectArray(Array von Typ SessionObject in dem alle aufgerufenen Seiten und zugehoerige Session ID angelegt sind);diese Variablen werden an einer Instanz der Klasse SessionArray als Konstruktor-Parameter übergeben werden.Die Variable pagecounter sollte angeben wie oft das aktuelle Object sessionObject(d.h die aufgerufene Seite und dazugehörige Session-ID) im Array vom Typ SessionObject vorhanden ist.Wenn z.B die aufgerufene Seite www.bucho.de schon 5 Male aufgerufen wurde,wird pagecounter den Wert 5 haben,leider gibt pagecounter immer den Wert 0 (null) an. Da pagecounter immer den Wert null angibt, dann können Daten in die Datenbank nicht richtig eingetragen werden.
Die Datenbankzugriffe werden über Jdbc-Template vom Spring durchgeführt.
Hier ist mein Code,ich bitte dich einen Blick auf den Variable pagecounter zu werfen,bei Rückfragen stehe ich immer gern zur Verfügung.
Im Voraus vielen Dank.
Lecorniaud.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.jdbc.datasource.*;

public class LiveStatReceiver implements Filter{
protected final Log log = LogFactory.getLog(getClass());
protected FilterConfig config;
private int counter = 0;
private int pagecounter = 0;
/*maximale Groesse des Arrays*/
private static final int MAX = 1000;
private static SessionObject[] objectArray = new SessionObject[MAX];
String page = "";
String sessionID = "";
DriverManagerDataSource dataSource = new DriverManagerDataSource();
private SessionArray sessionArray;
public SessionArray getSessionArray(){
if (sessionArray == null){
sessionArray = new SessionArray(counter,pagecounter,objectArray,dataSource);
}
return sessionArray;
}
public FilterConfig getConfig() {
return config;
}
public void setConfig(FilterConfig config) {
this.config = config;
}
public void init(FilterConfig config) throws ServletException{
this.config = config;
log.info("-----LiveStatReceiver : init ---> Filtername : " + config.getFilterName());
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
dataSource = (DriverManagerDataSource)ctx.getBean("myDataSource");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws ServletException,IOException,NullPointerException{
HttpServletRequest req = (HttpServletRequest)request;
page = req.getRequestURI();
HttpSession session = req.getSession();
sessionID = (String)session.getId();
if((page != null && !page.equals("")) && (sessionID != null &&
!sessionID.equals(""))){
try{
SessionObject sessionObject = new SessionObject(page,sessionID);
if(sessionObject != null){
/*wenn counter null ist,bedeutet dass,die aufgerufene Seite noch nicht im Array angelegt ist,dann pagecounter ist auch null.*/
if(counter < 1){
pagecounter = 0;
}else{ /*wenn eine Seite schon aufgerufen wurde,inkrementiert sich pagecounter,was leider nicht funktioniert.*/
for(int i=0; i<counter; i++){
if(objectArray.getPage() == page && objectArray.getSessionID()==sessionID){
pagecounter++; }
}
}
SessionObject newObject;
newObject = sessionObject;
objectArray[counter] = newObject;
counter++;
getSessionArray().setCounter(counter);
getSessionArray().setPagecounter(pagecounter);
getSessionArray().setSessionObject(objectArray);
}
}catch(NullPointerException e){
System.out.println("NullPointerException : "+e.getMessage());
}
}
try {
getSessionArray().doThreadCountdown();
log.info("--- Thread starten.");
}catch (InterruptedException e) {
e.printStackTrace();
for (StackTraceElement trace : new Throwable().getStackTrace() ){
log.info(" STRACK TRACE - ERROR : " + trace);
}
}
chain.doFilter(request,response);
}
public void destroy(){}
}
______________________________________________________________
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class SessionArray extends Thread{
/*aktuelle Groesse des Arrays*/
private int counter;
/*maximale Groesse des Arrays*/
private static final int MAX = 1000;
/*incrementiert sich falls eine Seite schon aufgerufen wird.*/
private int pagecounter;
/*Puffer zur Speicherung aller aufgerufene Seiten und Session_ID*/
private SessionObject[] sessionObject = new SessionObject[MAX];
protected final Log log = LogFactory.getLog(getClass());
DriverManagerDataSource dataSource ;
//jdbcTemplate fuer den Datenbankzugriff
private JdbcTemplate jdbcTemplate;
public SessionArray(int counter,int pagecounter,SessionObject[] sessionObject,DriverManagerDataSource dataSource){
this.counter = counter;
this.pagecounter = pagecounter;
this.sessionObject = sessionObject;
this.dataSource = dataSource;
}
public void run(){
try{
jdbcTemplate = new JdbcTemplate(dataSource);
String stringCounter = "";
String stringSessionCounter ="";
/*wählt in dem Puffer die letzte aufgerufene Seite,und ermittelt ob sie schon in der Tabelle existiert*/
List list = jdbcTemplate.queryForList("select page,counter,sessioncounter from statistik where page =?",new Object[] {sessionObject[counter-1].getPage()});
log.info("######## SessionArray run --> List-Size : "+list.size());
Iterator it = list.iterator();
/*Ergebnis der Datenbankabfrage.*/
while(it.hasNext()) {
Map userMap = (Map) it.next();
/*Umwandlung counter in String*/
stringCounter = userMap.get("counter").toString();
/*Umwandlung sessioncounter in String*/
stringSessionCounter =userMap.get("sessioncounter").toString();
}
int newCounter = 1;
int newSessionCounter = 1;
/*falls die aufgerufene Seite noch nicht in der Tabelle vorhanden ist,wird sie eingetragen*/
if(list.size() == 0){
jdbcTemplate.update("insert into statistik (page,counter,sessioncounter)" +
" values (?,?,?)",new Object[]{sessionObject[counter-1].getPage(),newCounter,newSessionCounter});
}else{
/*falls die Seite schon existiert,wird ein Update der Tabelle durchgeführt,was hier leider nicht funktioniert.*/
newCounter = Integer.parseInt(stringCounter)+1 ;
if(pagecounter == 0){
log.info("pagecounter: " + pagecounter);
newSessionCounter = Integer.parseInt(stringSessionCounter) + 1;
}else{
newSessionCounter = Integer.parseInt(stringSessionCounter);
}
jdbcTemplate.update("update statistik set page = ?,counter = ?," +
"sessioncounter =? where page = ?",new Object[] {sessionObject[counter-1].getPage(),newCounter,
newSessionCounter,sessionObject[counter-1].getPage()});
}
}catch(Exception e){
log.info("ERROR :" + e.getCause());
for (StackTraceElement trace : new Throwable().getStackTrace() ){
log.info("STRACK TRACE - ERROR : " + trace);
}
}
}
public void doThreadCountdown() throws java.lang.InterruptedException {
try {
Thread.sleep(2);
} catch(InterruptedException e) {
log.info("Thread interrupted!");
}
new SessionArray(counter,pagecounter,sessionObject,dataSource).start();
}
public int getPagecounter() {
return pagecounter;
}
public void setPagecounter(int pagecounter) {
this.pagecounter = pagecounter;
}
public int getCounter() {
return counter;
}
public void setCounter(int counter) {
this.counter = counter;
}
public SessionObject[] getSessionObject() {
return sessionObject;
}
public void setSessionObject(SessionObject[] sessionObject) {
this.sessionObject = sessionObject;
}
}

CREATE TABLE `statistik` (
`id` int(10) NOT NULL auto_increment,
`page` varchar(250) NOT NULL,
`counter` int(10) NOT NULL,
`sessioncounter` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1;


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost/pagecounter</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value></value></property>
</bean>
</beans>
________________________________________________________
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>Test für das Statistik-Projekt</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-jdbc.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>false</scripting-invalid>

</jsp-property-group>
<taglib>
<taglib-uri>http://www.springframework.org/tags</taglib-uri>
<taglib-location>/WEB-INF/spring.tld</taglib-location>
</taglib>
</jsp-config>
<servlet>
<description>Added by JBuilder to compile JSPs with debug info</description>
<servlet-name>debugjsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>classdebuginfo</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>debugjsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<filter>
<filter-name>liveStatReceiver</filter-name>
<filter-class>src.sessionSave.LiveStatReceiver</filter-class>
</filter>
<filter-mapping>
<filter-name>liveStatReceiver</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
</web-app>
 

dieta

Top Contributor
Mal kurz zwei Tips, wie du hier sicher schneller Hilfe findest:
1. verkürze und/oder strukturiere den gigantischen Textblock am Anfang deines Postings
und 2. Tu' allen hier einen Gefallen und benutz' Code-Tags.
 
S

SlaterB

Gast
ich schrecke ja eigentlich vor nichts zurück und wollte gerade dennoch mit dem Lesen anfangen,
aber bei dem ersten Satz:

> Hallo, ich habe ein Problem ,dass mich wirklich stört , deine Hilfe wäre mir unvergesslich.

ne, nein danke, bitte noch mal neuformulieren ohne so eine Anbiederung ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Problem mit Update von ApacheHttpClient von 5.2 auf 5.3 Allgemeines EE 10
D Problem mit redundanten Servern Allgemeines EE 7
Azemaria JSF: Problem bei der einfachsten Applikation Allgemeines EE 2
P JPA Internal Problem Nullpointer Allgemeines EE 10
S MessageDrivenBean Problem beim Zugriff auf Stateful EJB Allgemeines EE 2
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
B Problem beim Lesen des Codes... Allgemeines EE 2
R JPA Problem beim Speichern eines Users Allgemeines EE 2
S WebSocket Problem Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
Raidri [SEAM] rich:dataTable sortBy Problem Allgemeines EE 6
T Problem mit den Beispielen von Apache Allgemeines EE 5
W JSF Validator Problem HTTP Status 500 Allgemeines EE 2
E JBoss 7.1 Datasource Problem Allgemeines EE 2
M JSP Problem -unbestimmte Anzahl von Werten Transportieren Allgemeines EE 9
S Problem mit EJB Verständnis Allgemeines EE 4
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
F JSP Problem mit Datenbankanbindung über Glassfishserver Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
S Embedded JBoss Problem beim Deployment Allgemeines EE 4
E Session Problem Allgemeines EE 9
F problem mit nullpointer bei DB zugriff Allgemeines EE 2
A Erste Schritte... Problem mit Hibernate Allgemeines EE 15
ruutaiokwu jboss problem - work-verzeichnis muss manuell gelöscht werden??? Allgemeines EE 5
Stillmatic sendRedirect Problem! Allgemeines EE 3
M Problem mit Lookup auf EJB3 mit Glassfish Allgemeines EE 11
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
X JBoss InitialContext problem Allgemeines EE 5
LordZed Problem mit dem einbinden von Bibliotheken, die sich gegenseitig verwenden Allgemeines EE 5
H GWT Problem beim Ausführen Allgemeines EE 8
Q Problem mit JMS und Weblogic 10 Allgemeines EE 5
E Performance-Problem beim ersten Request Allgemeines EE 4
G Multi User Problem Allgemeines EE 8
G Datasource Problem Allgemeines EE 1
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Problem mit EJB: Bean soll Objekt eigener Klasse zurückgeben Allgemeines EE 2
N JavaMail Problem Allgemeines EE 4
N JBoss Problem mit Bibliothek in unterschiedlichen Versionen Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
B Problem mit ActionListener Allgemeines EE 13
G Simples JSF-Projekt in Eclipse - Problem Allgemeines EE 9
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
J Problem mit EJB Aufruf und DualCore Rechner Allgemeines EE 4
J ejb3.0 datenbank problem Allgemeines EE 2
J Problem mit Zurück-Button Allgemeines EE 2
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
J problem mit jsp/js Allgemeines EE 2
B Help - EJB2 - Problem mit Hybernate und "LIMIT" Allgemeines EE 6
B JSTL Problem Allgemeines EE 8
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
S Problem mit t:selectOneRadio und ValueChangeListener Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
B Problem mit JBoss-4.2.1.GA Allgemeines EE 8
N Tiles - JSF Problem Allgemeines EE 3
M JSF & EJB "Bean not bound" Problem Allgemeines EE 4
V MYSQL JDBC;java.lang.ClassNotFoundException; Problem Eclipse Allgemeines EE 3
megachucky JMS - Problem mit TemporaryQueue Allgemeines EE 2
G Problem mit MimeType/ContentType Allgemeines EE 4
E Java Mail problem Allgemeines EE 5
Y XFire - Maven Build Problem Allgemeines EE 2
D JSP Problem mit equals? Allgemeines EE 2
A Eclipse Start-Problem Allgemeines EE 5
S JSF - Custom converter Problem Allgemeines EE 3
Y JSF Uhrzeitausgabe Problem Allgemeines EE 4
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
Y JSF - rendered Problem Allgemeines EE 1
D Servlet Problem über Server Allgemeines EE 26
Zed JSF h:inputText h:outputText update Problem Allgemeines EE 2
K mysql treiber problem wenn import java.sql.* bei _servlet_ Allgemeines EE 2
S JDBC Mysql Connection Problem - datasource null Allgemeines EE 3
T Session-Problem Allgemeines EE 2
R Tiles - Layout-Problem wegen Leerzeichen Allgemeines EE 6
G Tomcat / Eclipse oder Web.xml Problem Allgemeines EE 11
S Netbeans 5.5 Visual Web Pack Problem mit INSERT und PK Allgemeines EE 4
D JSF Problem mit Action Allgemeines EE 2
F Klassen und zugriffs Problem "Help wanted"! Allgemeines EE 16
D <input type="file"> Problem Allgemeines EE 6
N Struts - Problem mit <html:link> Action Allgemeines EE 3
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
G Session Problem Allgemeines EE 5
T Ant Compiler Problem Allgemeines EE 9
A Hibernate-Problem mit MySQL-Cluster Allgemeines EE 6
H Servlet problem Allgemeines EE 10
G Problem mit Benutzerverwaltung Allgemeines EE 3
S Hibernate Mapping Problem Allgemeines EE 3
S Hibernate INSERT Problem Allgemeines EE 11
S Dummes JSP-Problem Allgemeines EE 8
P EJB-Installations-Problem Allgemeines EE 4
S CSS Problem in JSP Allgemeines EE 16
C Problem mit html:optionsCollection Allgemeines EE 4
R HILFE: Problem mit JSF examples Allgemeines EE 10
R Problem mit value-expression Allgemeines EE 7
R Problem mit for-schleife in JSP tag Allgemeines EE 8
B Struts Problem: Array in JSP ausgeben (logic:iterate) Allgemeines EE 12
M Redirct-Problem Allgemeines EE 4
M Geronimo v1.1 - Problem mit EAR deployen Allgemeines EE 5
S Problem mit Servlet Allgemeines EE 11

Ähnliche Java Themen

Neue Themen


Oben