码头加载多个上下文

时间:2013-09-08 08:28:18

标签: maven jetty embedded-jetty maven-jetty-plugin

我们有一个maven + springMVC应用程序,它使用maven jetty插件在我们进行开发时启动应用程序。我们使用jetty-env.xml文件来设置上下文和JNDI配置。该应用程序将成为更大的门户网站的一部分。

我们正在使用maven jetty插件

<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.2.0.v20101020</version>

with config

<webAppConfig>
  <contextPath>/ASX/mainApp</contextPath>
  <jettyEnvXml>src/main/resources/jetty-env.xml</jettyEnvXml>
</webAppConfig>

并使用jetty-env.xml

<Configure id='jms-webapp-wac' class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/ASX/mainApp</Set>
    ...
    ...
</Configure>

我们的目标结构是:

MainApp
  /forms
    page1.html
    page2.html
    etc...
  /WEB-INF
    web.xml

PortalApp
  /BAL_S
    /css
    /images
    /js
    etc...

现在PortalApp只有静态文件,并不是真正的Web应用程序,即它没有web.xml

应用程序依赖于门户网站的javaScripts。一些javaScript的位置如下:

<script src="/BAL_S/js/portal-jquery-lib.js"></script>
<script src="/BAL_S/js/libs/foundation.js"></script>
etc...

正如您所看到的那样,该位置以/ BAL_S开头,我们发现它很难找到工作,因为它就像引用另一个webapp上下文一样。当我们使用jetty启动应用程序时,我们会收到javaScript错误,因为它无法找到/ BAL_S

如果我们在tomcat中部署我们的应用程序并进行配置,如下所示,应用程序可以正常运行而不会出现任何javaScript错误。

<Context path="/" docBase="PortalApp"/>
  1. 所以问题是如何在Jetty中进行类似的配置,以便在应用程序启动时检测到/ BAL_S上下文?

  2. 我想我们需要在Jetty中有两个上下文。我该如何配置?

  3. maven jetty插件的webConfig是什么引用此配置?

  4. 希望有人可以提供帮助。例子很有用。

    提前致谢。 GM

1 个答案:

答案 0 :(得分:1)

OK我所要做的就是添加maven jetty插件配置,如下:

            <contextHandlers>
                <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
                    <contextPath>/</contextPath>
                    <resourceBase>src/main/PortalApp/</resourceBase>
                </contextHandler>
            </contextHandlers>

因此,这会将上下文路径'/'配置为'src / main / PortalApp /',现在我们可以在标记中找到/ BAL_S。