2017-12-19 5 views
0

web.xmlを使わずに、sitebricksで動的なWebモジュールを作成しようとしています。 (注釈のみ。)私は良い例をネットで検索してきましたが、それらのすべてが組み込みのjetty Webサーバーを含む単純なJavaアプリケーションです。サイトブリックとアノテーションを使用して動的なWebモジュールを作成するにはどうすればよいですか?

私はすでにちょうどテストのために、コンテキストリスナーを作成しました:

import com.google.inject.Guice; 
import com.google.inject.Injector; 
import com.google.inject.servlet.GuiceServletContextListener; 
import com.google.sitebricks.SitebricksModule; 

public class AppConfig extends GuiceServletContextListener { 

    @Override 
    public Injector getInjector() { 
     return Guice.createInjector(new SitebricksModule() { 
      @Override 
      protected void configureSitebricks() { 
       at("/api/version").serve(APIVersion.class); 
      } 
     }); 
    } 
} 

APIVersionクラス:

@Service 
public class APIVersion { 
    public class APIVersionResult { 
     public int major = 1; 
     public int minor = 0; 
    } 

    @Get 
    Reply<APIVersionResult> get() { 
     return Reply.with(new APIVersionResult()).as(Json.class); 
    } 
} 

は、フィルタを作成しますが、多分私はそれを必要としない。

import com.google.inject.servlet.GuiceFilter; 
import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebFilter; 

@WebFilter("/*") 
public class AppFilter extends GuiceFilter implements Filter { 

    public AppFilter() { 
     super(); 
    } 

    public void destroy() { 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     chain.doFilter(request, response); 
    } 

    public void init(FilterConfig fConfig) throws ServletException { 
    } 

} 

プロジェクトにはダイナミックWebモジュールファセットがあります。私はそれをwarファイルにコンパイルすることができます。しかし、私はいつも404エラーを受け取りますhttp://localhost/api/version

私は何が欠けていますか?

答えて

0

ここに答えがあります! @WebListenerアノテーションが私のGuiceServletContextListenerに追加されていませんでした!

@WebListener 
public class AppConfig extends GuiceServletContextListener { 

    @Override 
    public Injector getInjector() { 
     return Guice.createInjector(new SitebricksModule() { 
      @Override 
      protected void configureSitebricks() { 
       at("/api/version").serve(APIVersion.class); 
      } 
     }); 
    } 
} 
関連する問題