Je suis nouveau en utilisant undertow, je développe une application autonome qui l'utilisera comme serveur embarqué. Je souhaite pouvoir déployer des sockets Web, des servlets et des services htmls restfull dans mon flux intégré. Jusqu'à présent, j'ai seulement fait le test avec des sockets web et des servlets, le problème que chaque fonction fonctionne correctement, mais déployez-les ensemble des sockets web pas d'accès depuis une page de test avec HTML et JavaScript, si je supprime le servlet Le test nigun de la page fonctionne sans erreur.Embedded Undertown déployer websocket et servlet en même temps, ne pas travailler
Ceci est mon code:
/*
* Create the appWebSocketDeploymentInfo and configure
*/
WebSocketDeploymentInfo appWebSocketDeploymentInfo = new WebSocketDeploymentInfo();
appWebSocketDeploymentInfo.setBuffers(new ByteBufferSlicePool(BufferAllocator.BYTE_BUFFER_ALLOCATOR, 17000, 17000 * 16));
appWebSocketDeploymentInfo.addEndpoint(WebSocketEndpoint1.class);
appWebSocketDeploymentInfo.addEndpoint(WebSocketEndpoint2.class);
/*
* Create the appDeploymentInfo and configure
*/
DeploymentInfo appDeploymentInfo = Servlets.deployment()
.setClassLoader(Server.class.getClassLoader())
.setContextPath("/myapp)
.setDeploymentName("app.war")
.setResourceManager(new FileResourceManager(new File("src/main/webapp"), 1024))
.addServlets(Servlets.servlet("HomeServlet", HomeServlet.class).addMapping("/home"))
.setResourceManager(new ClassPathResourceManager(Server.class.getClassLoader(), Server.class.getPackage()))
.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME, appWebSocketDeploymentInfo);
/*
* Create the deploymentManager
*/
deploymentManager = Servlets.defaultContainer().addDeployment(appDeploymentInfo);
/*
* Deploy the app
*/
deploymentManager.deploy();
/*
* Create the path handle
*/
pathHandler = Handlers.path(Handlers.redirect("/myapp/home")).addPrefixPath("/myapp", deploymentManager.start());
/*
* Create the server
*/
undertowServer = Undertow.builder().addHttpListener(DEFAULT_PORT, DEFAULT_IP).setHandler(pathHandler).build();
L'erreur javascript journal est
connexion WebSocket à 'ws: // localhost: 8080/Fermat/node-canal' a échoué: Erreur lors de poignée de main WebSocket : Réponse inattendue code: 404
Pas vraiment une réponse à votre question, mais plutôt un indice: avez-vous pensé à utiliser Spring Boot pour cela? Il supporte aussi Undertow et s'occupera automatiquement de ce que vous faites manuellement. – Marged
merci, mais je ne sais pas beaucoup sur le printemps et ne voulais vraiment pas l'utiliser. – Roberto
J'ai trouvé cet exemple: https://github.com/fourcube/guice-undertow-websockets – dsmith