PathParam null

SyntaxTalksToMe

Bekanntes Mitglied
Guten Tag,

ich möchte Nutzerinformationen ein einer HashMap speichern, damit ich auf ihre Verbindungen und Usernamen zugreifen kann.

Ich poste jetzt erstmal meinen Code und gebe anschließend meine Gedankengänge zum besten :)

Code:
@ServerEndpoint("/websocketendpoint")
public class WsServer {
    
    private Session session;
    private static Set<WsServer> chatEndpoints = new CopyOnWriteArraySet<>();
    private static HashMap<String, String> users = new HashMap<>();
    
    @OnOpen
    public void onOpen(Session session, @PathParam("user_id") String username) throws IOException  {
 
        this.session = session;
        
        System.out.print("Session:  "+session);
        
        
        chatEndpoints.add(this);
        
        System.out.print("PathParam" + username);
        
        session.getUserProperties().put("user_id", username);
        users.put(session.getId(), username);     
    }

Ich weiß, dass das PathParam quasi das Request des Clients "auffängt". Allerdings ich verstehe nicht ganz, was hier an dieser Stelle passiert:

Code:
@PathParam("user_id") String username

Der Username ist klar. Aber was macht da der String in Klammern? Ich Schätze das ist der Zeiger. Ich hatte zuerst gedacht, dass da die Verbindungsdetails mitgeteilt werden, aber das passiert ja in der Session.

Ich hatte mich bei dem Code an ein Tutorial gehalten. Was da an sich passiert ist mir klar, bis auf die Sache mit dem @PathParam.

In dem Tutorial war oben neben der ServerEndpoint Notation das gestanden.
Code:
@ServerEndpoint(value="/chat/{username}")

Was ich daran aber nicht verstehe, wo da die Verbindung liegt. Aber auch das brachte nichts wegen wegen der NullPointer Exception die PathParam auslöst.

Also kurz:
Was genau macht PathParam und was bedeutet der String in Klammern. Und warum habe ich eine NullPointer Exception.

Über eine Erklärung wäre ich sehr dankbar.

Schon mal allen eine schöne Weihnachtszeit
 

SyntaxTalksToMe

Bekanntes Mitglied
Ok, ok. Ich war vielleicht etwas faul. Selbst das Hirneinschalten ist angesagt.. Ich hab auch schon einen Erfolg gehabt gerade. Die NullPointer ist weg. Ich hab mir den Link nochmal angeschaut. Bitte korrigiert mich, wenn ich falsch liege. Ich möchte es kurz rekapitulieren. Nicht dass ich etwas falsch verstanden habe:

Ich notiere die Klasse in der sich meine Information befindet die ich haben möchte mit
Code:
@Path("/irgendein_sinvoller_name")

Dann spreche ich die Methode oder String an, die Informationen hat.
Code:
@GET
    @Path("{id}")


Daraus ergibt sich mein Pfad für den Server. @ServerEndpoint(value="/irgendein_sinvoller_name/{id}")

Hab ich das soweit verstanden? Dieser PathParam beschreibt also den Weg.

Sorry nochmal. Wollte es mir zu einfach machen. Aber jetzt ist der Lerneffekt auch richtig da :)


Nur blöd, dass wenn ich mich jetzt mit dem Server verbinde, er mir einen Error wirft und mich gleich wieder disconnected. Da passt bestimmt noch nicht mit der Notation
 

Ähnliche Java Themen

Neue Themen


Oben