2017-07-13 5 views
0

J'ai un code JSR-356 (API WebSocket) qui est empaqueté dans un ensemble OSGi. La servlet charge le code via Apache Felix si nécessaire.Registre ServletRequestListener de OSGi Bundle

Je veux enregistrer un ServletRequestListener, que je normalement mis dans le descripteur Web:

<listener> 
    <listener-class>path.to.my.RequestListener</listener-class> 
</listener> 

mais étant donné que le paquet est pas dans le chemin de classe qui ne fonctionnerait pas.

Comment puis-je enregistrer le ServletRequestListener? Je pense qu'il y aurait peut-être un moyen de numériser des annotations, mais je ne suis pas sûr de savoir comment mettre cela en place. Mon autre souci est que de nombreux utilisateurs désactivent l'analyse pour améliorer le temps de démarrage.

Le travail de l'écouteur consiste à initialiser HttpSession afin que je puisse récupérer le ServletContext dans la négociation WebSocket. S'il y a un moyen d'y parvenir sans l'auditeur, cela fonctionnera encore mieux pour moi.

+0

Pouvez-vous décrire votre configuration un peu mieux? Vous dites que le bundle n'est pas dans le classpath. Comment un bundle par dans le classpath. Dans OSGi, il n'y a pas non plus de chemin de classe unique. –

+0

@ ChristianSchneider À droite, j'essayais juste de clarifier pourquoi web.xml ne fonctionnerait pas. J'ai enlevé cette déclaration pour éviter toute confusion. – isapir

Répondre

0

Vous ne savez pas si cela peut être résolu complètement avec les spécifications. Pax web a un support websocket. Alors peut-être cela peut vous aider:

Voir pax web websocket example

+0

Merci, mais initialise-t-il le HttpSession pour chaque requête? Et si oui, comment? C'est mon objectif principal ici puisque j'ai tout autre travail que ça. – isapir