2010-12-08 13 views
3

Jetty(アプリケーションの一部)で実行される単純なSpring MVC "Hello world"アプリケーションを作成したいと思います。私のアプリケーションのJettyにWebアプリケーションコンテキストを追加する

構造は次のとおりです。

|-WEB-INF 
| |-view 
| |-layout 
| |-index.jsp 
| |-web.xml 
| 
|-jetty.xml 
|-application-context.xml 

私は突堤サーバを作成し、web.xmlファイルに基づいて、Webアプリケーションのコンテキストを追加しよう:

Resource jettyConfig = Resource.newSystemResource("jetty.xml"); 
XmlConfiguration configuration = new XmlConfiguration(jettyConfig.getInputStream()); 
Server server = (Server)configuration.configure(); 

WebAppContext wac = new WebAppContext(); 
wac.setDescriptor("WEB-INF/web.xml"); 
wac.setContextPath("/"); 
wac.setParentLoaderPriority(true); 
server.setHandler(wac); 

server.start(); 

Serverは罰金開始しますが、私のコンテキストなし:ログの春の起動に関する情報はありません。春のmvcコントローラは利用できません。誰か私が間違っているアイデアを持っていますか? jetty.xmlの

内容:WEB-INF/web.xmlのの

<Configure id="server" class="org.mortbay.jetty.Server"> 
     <Call name="addConnector"> 
      <Arg> 
       <New class="org.mortbay.jetty.nio.SelectChannelConnector"> 
        <Set name="port">9080</Set> 
       </New> 
      </Arg> 
     </Call> 
     <Set name="handler"> 
      <New class="org.mortbay.jetty.handler.HandlerList"> 
       <Set name="handlers"> 
        <Array type="org.mortbay.jetty.Handler"> 
         <Item> 
          <New class="org.mortbay.jetty.handler.DefaultHandler" /> 
         </Item> 
         <Item> 
          <New class="org.mortbay.jetty.handler.ResourceHandler"> 
           <Set name="resourceBase">.</Set> 
          </New> 
         </Item> 
        </Array> 
       </Set> 
      </New> 
     </Set> 
    </Configure> 

内容:

<web-app> 
     <display-name>Hello world</display-name> 

     <init-param> 
      <param-name>development</param-name> 
      <param-value>true</param-value> 
     </init-param> 

     <servlet> 
      <servlet-name>mvc</servlet-name> 
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
      <init-param> 
       <param-name>contextConfigLocation</param-name> 
       <param-value>application-context.xml</param-value> 
      </init-param> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>mvc</servlet-name> 
      <url-pattern>/*</url-pattern> 
     </servlet-mapping> 

     <filter> 
      <filter-name>springSecurityFilterChain</filter-name> 
      <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
     </filter> 
     <filter-mapping> 
      <filter-name>springSecurityFilterChain</filter-name> 
      <url-pattern>/*</url-pattern> 
     </filter-mapping> 

     <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
     </listener> 

     <error-page> 
      <error-code>404</error-code> 
      <location>/error/404.jsp</location> 
     </error-page> 
     <error-page> 
      <error-code>500</error-code> 
      <location>/error/500.jsp</location> 
     </error-page> 
    </web-app> 

答えて

9

あなたが爆発戦争のディレクトリで実行している場合は、明示的資源基盤のプロパティを設定してみてください:

context.setResourceBase("/path-to-your-project/WebContent"); 
context.setDescriptor("/path-to-your-project/WebContent/WEB-INF/web.xml"); 

または戦争自体を展開している場合は、次のものを使用できます。

context.setWar("/path-to-your-project/WebContent"); 

ここにはembedded Jetty samplesを示すドキュメントがあります。あなたのアプリとの関連では

Resource jettyConfig = Resource.newSystemResource("jetty.xml"); 
XmlConfiguration configuration = new XmlConfiguration(jettyConfig.getInputStream()); 
Server server = (Server)configuration.configure(); 

WebAppContext wac = new WebAppContext(); 
wac.setResourceBase("."); 
wac.setDescriptor("WEB-INF/web.xml"); 
wac.setContextPath("/"); 
wac.setParentLoaderPriority(true); 
server.setHandler(wac); 

server.start(); 

これは、あなたがからサーバーを実行している、あなたのベースパスは、Webコンテンツへのパスと同じであることを前提としています。

+0

ありがとうございます! wac.setResourceBase( "。")を設定しても私は役に立ちませんでしたが、 "。"絶対パス(新しいClassPathResource( "。")。getURI()。toString())パス私の問題を解決! 詳細については、http://stackoverflow.com/questions/1462953/embedded-jetty-looking-for-files-inside-its-jar-fileをご覧ください。 – mikhail

1

application-context.xmlファイルは、WEB-INFディレクトリ内に配置する必要があります。

関連する問題