Tomcatサーバーをプログラムで作成、構成、および実行する
1. 概要
このクイック記事では、 Tomcatサーバーをプログラムで作成、構成、および実行します。
2. 設定
開始する前に、 pom.xml に以下の依存関係を追加して、Mavenプロジェクトをセットアップする必要があります。
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apache.httpclient}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
これは、プロジェクトでここで使用されている依存関係の最新バージョンを含むMavenCentralへのリンクです。
3. Tomcatの初期化と構成
まず、Tomcatサーバーの初期化と構成に必要な手順について説明します。
3.1. Tomcatの作成
次の手順を実行するだけでインスタンスを作成できます。
Tomcat tomcat = new Tomcat();
サーバーができたので、構成しましょう。
3.2. Tomcatの構成
サーバーを起動して実行する方法に焦点を当て、サーブレットとフィルターを追加します。
まず、ポート、ホスト名、および appBase (通常はWebアプリ)を構成する必要があります。 この目的のために、現在のディレクトリを使用します。
tomcat.setPort(8080);
tomcat.setHostname("localhost");
String appBase = ".";
tomcat.getHost().setAppBase(appBase);
次に、 docBase (このWebアプリケーションのコンテキストルートディレクトリ)を設定する必要があります。
File docBase = new File(System.getProperty("java.io.tmpdir"));
Context context = tomcat.addContext("", docBase.getAbsolutePath());
この時点で、Tomcatはほぼ機能しています。
次に、サーブレットとフィルターを追加し、サーバーを起動して、サーバーが機能しているかどうかを確認します。
3.3. Tomcatコンテキストへのサーブレットの追加
次に、簡単なテキストをに追加します
まず、サーブレットを定義しましょう。
public class MyServlet extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest req,
HttpServletResponse resp) throws IOException {
resp.setStatus(HttpServletResponse.SC_OK);
resp.getWriter().write("test");
resp.getWriter().flush();
resp.getWriter().close();
}
}
次に、このサーブレットをTomcatサーバーに追加します。
Class servletClass = MyServlet.class;
Tomcat.addServlet(
context, servletClass.getSimpleName(), servletClass.getName());
context.addServletMappingDecoded(
"/my-servlet/*", servletClass.getSimpleName());
3.4. Tomcatコンテキストへのフィルターの追加
次に、フィルターを定義して、Tomcatに追加します。
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) {
// ...
}
@Override
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.addHeader("myHeader", "myHeaderValue");
chain.doFilter(request, httpResponse);
}
@Override
public void destroy() {
// ...
}
}
コンテキストにフィルターを追加するには、もう少し作業が必要です。
Class filterClass = MyFilter.class;
FilterDef myFilterDef = new FilterDef();
myFilterDef.setFilterClass(filterClass.getName());
myFilterDef.setFilterName(filterClass.getSimpleName());
context.addFilterDef(myFilterDef);
FilterMap myFilterMap = new FilterMap();
myFilterMap.setFilterName(filterClass.getSimpleName());
myFilterMap.addURLPattern("/my-servlet/*");
context.addFilterMap(myFilterMap);
この時点で、Tomcatにサーブレットとフィルターを追加する必要があります。
あとは、起動して「テスト」ページを取得し、ログをチェックしてフィルターが機能するかどうかを確認するだけです。
4. Tomcatの起動
これは非常に単純な操作であり、その後、Tomcatが実行されていることを確認する必要があります。
tomcat.start();
tomcat.getServer().await();
開始したら、http:// localhost:8080 / my-servletにアクセスして、テストページを表示できます。
そして、ログを見ると、次のようなものがあります。
これらのログは、Tomcatがポート8080でリッスンを開始し、フィルターが正しく機能していることを示しています。
5. 結論
このチュートリアルでは、Tomcatサーバーの基本的なプログラムによるセットアップについて説明しました。
サーバーを作成、構成、および実行する方法だけでなく、プログラムでサーブレットとフィルターをTomcatコンテキストに追加する方法についても説明しました。
いつものように、完全な実装はGithubのにあります。