2016-09-07 4 views
1

J'utilise jetty-server: 9.2.11 et je veux avoir un répertoire webapps pour le déploiement de la guerre dans mon application de jetée intégrée comme ce que nous avons lors de l'utilisation du serveur de jetée autonome. J'ai lu certains documents et trouvé « Comme Jetty XML » de configuration programmatique comme ci-dessouscomment faire pour jetty.home jetty.home Embedded jetty avec maven

// Path to as-built jetty-distribution directory 
    String jettyHomeBuild = "../../jetty-distribution/target/distribution"; 

    // Find jetty home and base directories 
    String homePath = System.getProperty("jetty.home", jettyHomeBuild); 
    File homeDir = new File(homePath); 
    if (!homeDir.exists()) 
    { 
     throw new FileNotFoundException(homeDir.getAbsolutePath()); 
    } 
    String basePath = System.getProperty("jetty.base", homeDir + "/demo-base"); 
    File baseDir = new File(basePath); 
    if(!baseDir.exists()) 
    { 
     throw new FileNotFoundException(baseDir.getAbsolutePath()); 
    } 

    // Configure jetty.home and jetty.base system properties 
    String jetty_home = homeDir.getAbsolutePath(); 
    String jetty_base = baseDir.getAbsolutePath(); 
    System.setProperty("jetty.home", jetty_home); 
    System.setProperty("jetty.base", jetty_base); 







    // === jetty-deploy.xml === 
    DeploymentManager deployer = new DeploymentManager(); 
    deployer.setContexts(contexts); 
    deployer.setContextAttribute(
      "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", 
      ".*/servlet-api-[^/]*\\.jar$"); 

    WebAppProvider webapp_provider = new WebAppProvider(); 
    webapp_provider.setMonitoredDirName(jetty_base + "/webapps"); 
    webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml"); 
    webapp_provider.setScanInterval(1); 
    webapp_provider.setExtractWars(true); 
    webapp_provider.setConfigurationManager(new PropertiesConfigurationManager()); 

    deployer.addAppProvider(webapp_provider); 
    server.addBean(deployer); 

Mais ici utilise « jetée distribution », mais je ne les fichiers jar liés à la jetée dans mon répertoire lib qui seront copiés en tant que dépendances de Maven. Je suis coincé ici pour faire ma configuration pour avoir "jetty.home" pour mon application de jetée embarquée parce que je n'utilise pas de distribution jetée standard. Je n'ai que des jars séparés.

Répondre

1

jetty.home a très peu de signification lors de l'utilisation .

Le LikeJettyXml est exactement comme son nom l'indique, sa version java de etc/jetty-*.xml fichiers de la jetée de distribution, qui est tout ce qu'il est et prétend être.

Si vous souhaitez configurer un répertoire webapps (alias DeploymentManager avec WebAppProvider), faites-le.

Afin d'avoir du succès avec ceci, vous aurez besoin de comprendre une bande décente de la façon dont Jetty fonctionne et fonctionne, en mettant l'accent sur les DeploymentManager et WebAppContext.

Alors que le LikeJettyXml vous montre certaines des fonctionnalités, il vous le montre du point de vue de la distribution de la jetée, pas de la jetée embarquée.

Par exemple:

  • la jetée de distribution a une etc/webdefault.xml qui est référencée par l'appel setDefaultsDescriptor(), mais ce n'est pas nécessaire d'être réglé, comme DeploymentManager peut simplement utiliser la même webdefault.xml qui existe dans les fichiers jar à la place.
  • la distribution jetty possède une base jetty.base qui peut préconfigurer le répertoire ${jetty.base}/webapps lorsque vous activez le module deploy. Ce répertoire, le concept d'une jetty.base, l'idée et les fonctionnalités des modules, et même le nom webapps sont tous arbitraires, et n'ont pas besoin d'exister de cette façon pour embedded-jetty. Faites ce répertoire où vous le voulez, nommez-le comme vous le souhaitez.
  • scanInterval, extractWars, ConfigurationManager sont tous facultatifs. en fait, les seules configurations obligatoires sont les setMonitoredDirName et setContexts
  • le réglage de la ContainerIncludeJarPattern n'est pas nécessaire pour les configurations-jetée intégré la plupart (voir d'autres questions sur StackOverflow pour que cet attribut ne)
  • définissant les propriétés du système est aussi dénuée de sens pour-jetée intégré, rien dans la jetée embarqué utilise ces propriétés (ces propriétés existent uniquement pour la jetée de distribution, son start.jar, et les différents fichiers ${jetty.home}/etc/*.xml)

Hope this helps, et s'il vous plaît prendre un certain temps de vraiment comprendre comment les déploiements fonctionnent dans Jetty (le javadoc pour DeploymentManager es un travail décent expliquant cela).

Le déploiement peut être un grand sujet, aussi essayer de couvrir tout cela dans une seule réponse stackoverflow est hors de portée.

Vous voulez comprendre:

  • La composante jetée LifeCycle
  • Le rôle DeploymentManager
  • Le déploiement AppLifeCycle
  • Le rôle AppProvider
  • Le WebAppContext
  • Th e serveur/WebAppContextConfiguration cours
  • Le WebAppContext Initialisation LifeCycle
+0

merci pour la réponse et maintenant je comprends que j'utilise DeploymentManager et WebAppContext maintenant et pour mon but avec un emplacement pour déployer mes fichiers de guerre. – user3014595

0

avec peu de recherche, je filtré ce que je dois à mon but de la jetée-like.xml et ce qui est ci-dessous est ce que nous devons garder

DeploymentManager deployer = new DeploymentManager(); 
    deployer.setContexts(contexts); 
    deployer.setContextAttribute(
      "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", 
      ".*/servlet-api-[^/]*\\.jar$"); 

    WebAppProvider webapp_provider = new WebAppProvider(); 
    webapp_provider.setMonitoredDirName("webapps"); 
    webapp_provider.setScanInterval(1); 
    webapp_provider.setExtractWars(true); 
    webapp_provider.setConfigurationManager(new PropertiesConfigurationManager()); 

    deployer.addAppProvider(webapp_provider); 
    server.addBean(deployer); 

Voir ici pas besoin de jetty_base ou JETTY_HOME

webapp_provider.setMonitoredDirName ("webapps");