2017-07-21 7 views
0

J'essaie de diffuser du contenu statique via un ResourceHandler sur mon serveur Undertow qui a un déploiement RestEasy.Traitement du contenu statique dans UndertowJaxrsServer

public class Server { 
public static void main(String[] args) throws Exception { 
    UndertowJaxrsServer server = new UndertowJaxrsServer(); 
    Undertow.Builder serverBuilder = Undertow 
      .builder() 
      .addHttpListener(8080, "0.0.0.0") 
      .setHandler(
        Handlers.path().addPrefixPath(
          "/web", 
      new ResourceHandler(new PathResourceManager(Paths.get("/some/fixed/path"),100)) 
        .setDirectoryListingEnabled(true) 
        .addWelcomeFiles("index.html"))); 

    ResteasyDeployment deployment = new ResteasyDeployment(); 
    deployment.setApplicationClass(MyRestApplication.class.getName()); 
    DeploymentInfo deploymentInfo = server.undertowDeployment(deployment, "/") 
      .setClassLoader(Server.class.getClassLoader()) 
      .setContextPath("/api").setDeploymentName("WS"); 
    server.deploy(deploymentInfo); 
    server.start(serverBuilder); 
    } 
} 

Avec le code ci-dessus, seuls les travaux de déploiement de resteasy et je reçois un 404 pour le contenu statique (index.html).

Des pointeurs? Merci!

Répondre

0

L'API UndertowJaxrsServer est un peu compliquée. Bien que vous puissiez configurer Undertow.Builder pour démarrer le serveur, le gestionnaire associé est remplacé par une instance PathHandler par défaut, qui est également utilisée pour configurer l'application REST. Donc, la bonne façon d'ajouter plus de HttpHandlers (comme un ResourceHandler) est d'utiliser la méthode UndertowJaxrsServer # addResourcePrefixPath pour spécifier des gestionnaires supplémentaires pour vos requêtes.

Voici un exemple d'utilisation de l'API ci-dessus pour servir avec succès du contenu statique en plus des ressources REST: https://gist.github.com/sermojohn/928ee5f170cd74f0391a348b4a84fba0