Multi User Problem

  • Themenstarter Gelöschtes Mitglied 5909
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gelöschtes Mitglied 5909

Gast
Meine Webapp ist sogut wie fertig und ich hab mal ein paar leute auf die Seite geschickt.
Schon kamen wieder Probleme:

- nach dem Login fliegt man sofort wieder raus, obwohl ich den User in der HttpSession speicher
- wenn man ein Artikel in den Warenkorb legen will, tritt eine NullPointerException auf, weil der
EntityManager null ist - bei Stateless EJBs gehts, bei der Statefull Cart EJB nicht

Code:
@Stateful
@TransactionManagement(TransactionManagementType.CONTAINER)
public class ShoppingCart implements ShoppingCartLocal, Serializable {

    @PersistenceContext(unitName="webshop")
    private EntityManager   entityManager;


Sobald ich mit dem em was mache NullPointer, aber nur bei dieser EJB - alle anderen sind Stateless

Code:
            else if (action.equals("login")) {
                User user = userManager.login(username, password);
                if (user != null) {
                    session.setAttribute("user", user);
                } 
                else {
                    request.setAttribute("error", "Login Failed.");
                }
                redirect(request, response, "/index.jsp");
            }

Den Logout mache ich so:

Code:
            else if (action.equals("logout")) {
//                cart.remove();
                session.setAttribute("user", null);
                session.setMaxInactiveInterval(0);
                session = request.getSession(true);
                redirect(request, response, "/index.jsp");
            }

Wenn ich die auskommentierte methode der EJB die mit @Remove versehen ist aufrufe dann krieg ich ne EJBException

Das komische ist, wenn ich selber auf Localhost teste funktioniert das ganze - keine NPE bei der EJB und ich bleibe eingeloggt.
Irgendwie scheint die Session / EJB zuordnung nicht ganz zu klappen, obwohl das ja angeblich so toll sein soll :/
 
M

maki

Gast
Schwer zu sagen, vermute(spekuliere) dass die HttpSession neu angelegt wird und damit das Attribut user null ist.
 
G

Gelöschtes Mitglied 5909

Gast
Ich hatte vorher in allen Servlets

Code:
request.getSession(true);

Jetzt hab ich das ganze ersetzt in


Code:
request.getSession();

mit gleichem ergebniss :/

durch forwarden wird die Session doch nicht beeinflusst oder?

Code:
    private void redirect(HttpServletRequest request, HttpServletResponse response, String page) throws ServletException, IOException {
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(page);
        dispatcher.forward(request, response);
    }
 
M

maki

Gast
Kommt darauf an wie die Session gesetzt/gelesen wird.

Cookie oder URL Rewriting?

Letzteres ist nicht ganz ohne, wenn der Testserver das anders macht als deine Dev Kiste kann es da schon zu Problemen kommen.
 
G

Gelöschtes Mitglied 5909

Gast
Danke erstmal, hab mir garkeine gedanken darüber gemacht wie der Server die Session verwaltet. Eine Frage dazu hätte ich noch: wenn ich Cookies verwende, muss ich dann die SessionUID manuell aus dem Cookie auslesen und mir die passende Session selber suchen oder macht der Server dass dann automatisch?

Ich verwende Glassfish als Appserver

Folgendes habe ich gefunden, was man in die sun-web.xml eintragen kann:

Code:
   <session-config>
      <session-properties>
         <property name="enableCookies" value="true" />
<property name="enableURLRewriting" value="false" />
</session-properties>
   </session-config>

Reicht es wenn ich das mache oder muss ich mich sonst noch um etwas kümmern? Bei URLRewriting müsste ich jeden link mit encodeURL() codieren wenn ich das richtig verstanden habe.

Das wär erstmal das wichtigste was ich noch wissen muss :)

Dann wäre es noch gut zu Wissen was ich machen muss, damit ich die Stateful EJB mit der @Remove Annotierten Methode entfernen kann und sie vom Container automatisch wieder erzeugt wird wenn eine neue Anfrage kommt.

So wie ich das in meinem tollen Buch gelesen habe sollte die Verwaltung der EJB ja eigentlich vom Container automatisch gemacht werden und ich müsste mich dann nicht darum kümmern. Als ich beim logout aber auch cart.remove() aufgerufen habe ist bei der nächsten Anfrage eine NoSuchEjbException geworfen worden. Muss ich dann per hand eine neue Instanz erzeugen? Die bisherige EJB (also die erste Instanz) habe ich mit der @EJB Annotation injected.
Eine ejbCreate() Methode wie es bei EJB 2.1 gab gibt es bei den von mir Verwendeten EJB 3.0 meines Wissens ja nicht.

Die EJB habe ich folgendermaßen in der web.xml konfiguriert:

Code:
    <ejb-local-ref>
        <ejb-ref-name>cart</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <local-home/>
        <local>de.mas.ejb.session.ShoppingCartLocal</local>
        <ejb-link>de.mas.ejb.session.ShoppingCart</ejb-link>
    </ejb-local-ref>

Bei den Stateless EJBs habe ich das Problem natürlich nicht und der Warenkorb ist meine einige Statefull EJB.

Danke im vorraus :)
 
M

maki

Gast
Wenn ich dich richtig verstanden habe, hast du alle deine Probleme nur auf deinem "Testserver", nicht lokal.

Würdemich erstmal um das Problem mit den Sesions kümmern.
Habe keine Erfahrung mit Glassfish als Webserver, Tomat versucht erst die Cookies zu verwenden, wenn das nicht geht greift er auf URL rewriting zurück, cookies sind immer zu bevorzugen.
Beide Mechanismen unzen gleich aus deiner sicht, ausser eben die Sache mit der session die dann immer in der URL mitkodiert werden muss.

Mit isNew() kannst du prüfen ob eine Session neu ist, würde ich zu testzwecken mal probieren, wenn nciht,ist dein Problem ein anderes.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Fotoverwaltung in einer Multi-User Anwendung Allgemeines EE 4
A Apache Shiro RBAC multi "Mandant" Allgemeines EE 0
Scholle Architecture-related question (Multi-Layer App) Allgemeines EE 2
L EJB3 Multi-Table Allgemeines EE 5
B eine vom Admin hochgeladene csv -Datei in der Datatable auch von jedem User sichtbar Allgemeines EE 0
OnDemand JSF Growl Message an User senden Allgemeines EE 13
T JSF User erstellen Allgemeines EE 22
P Nur ein User für Web Application Allgemeines EE 11
B Tomcat -> Funktions User Credentials hinterlegen Allgemeines EE 7
TRunKX hx:commandExButton DAtei erstellen und dem User zum Download Allgemeines EE 7
A Mehrere User gleichzeigig, wie mach ich das? Allgemeines EE 14
F FORM Auth in JBoss für User mit falscher Rolle ? Allgemeines EE 2
B Session Daten pro User merken Allgemeines EE 9
I EMail Bestätigung bei neuem User Allgemeines EE 3
B Woher kommt der User? Verweise . Links . Allgemeines EE 2
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 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
T Problem dem Zaehler in mein Java - Code Allgemeines EE 2
A Hibernate-Problem mit MySQL-Cluster Allgemeines EE 6

Ähnliche Java Themen

Neue Themen


Oben