|
はじめに この記事でわかる・できること JavaプログラムからWARファイルを作成する方法 Tomcatの導入方法 TomcatへWARファイルをデプロイする方法 前提Javaプログラムが作成済みであること この記事の対象者初めてTomcatにアプリをデプロイするよ~という方 WARファイルの作成が上手くいかないよ~という方 などなど 動作環境・使用するツールや言語OS バージョン ゲストOS:Ubuntu 24.04.2 LTS ホストOS:Windows11 Home 24H2 ツール バージョン Visual Studio Code Version 1.99.0 (user setup) Apache Maven 3.8.7 Java version: 21.0.6 vendor: Ubuntu runtime: /usr/lib/jvm/java-21-openjdk-amd64 Apache Tomcat/9.0.104 OS Name: Linux OS Version: 5.15.167.4-microsoft-standard-WSL2 Architecture: amd64 JVM Version: 21.0.6+7-Ubuntu-124.04.1 JVM Vendor: Ubuntu 言語 バージョン Java openjdk 21.0.6 2025-01-21 やってみたこと手元にJavaプログラムがある状態から、WARファイルを作成してApache Tomcat(以下、Tomcatと呼びます)をインストールし、デプロイしてみました。 まず前提として以下の4つを示します。 カレントディレクトリ カレントディレクトリからのディレクトリ構造(ツリー形式) Javaソースファイルの内容 pom.xmlファイルの内容
カレントディレクトリ ###コマンド pwd ###実行結果 /home/shigemasa89/nogizaka46-playlist-maker/demo
カレントディレクトリからのディレクトリ構造 ###コマンド tree ###実行結果 . ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── example │ │ └── ScrapeSongTitlesServlet.java │ └── resources └── test └── java 9 directories, 2 files
ScrapeSongTitlesServlet.java package com.example; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class ScrapeSongTitlesServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/html; charset=UTF-8"); StringBuilder html = new StringBuilder("<html><body><h1>乃木坂46の楽曲一覧</h1><ul>"); try { String url = "https://n46db.com/songs/all-songs-list.php"; Document doc = Jsoup.connect(url).get(); Element songTable = doc.selectFirst("table:nth-of-type(3)"); Elements songRows = songTable.select("tbody tr"); for (Element row : songRows) { Element songTitleCell = row.selectFirst("td:nth-of-type(2)"); if (songTitleCell != null) { html.append("<li>").append(songTitleCell.text()).append("</li>"); } } } catch (Exception e) { e.printStackTrace(); html.append("<li>データ取得に失敗しました。</li>"); } html.append("</ul></body></html>"); resp.getWriter().write(html.toString()); } }
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 "> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>1.0</version> <packaging>war</packaging><!-- warファイルとしてパッケージング --> <properties> <maven.compiler.source>21</maven.compiler.source><!-- 使用中のJavaバージョンを指定 --> <maven.compiler.target>21</maven.compiler.target><!-- 使用中のJavaバージョンを指定 --> </properties> <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependencies> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.19.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> <!-- 最新バージョンに更新 --> </plugin> </plugins> </build> </project> カレントディレクトリにpom.xmlファイルが配置されていることを確認し、以下のコマンドでWARファイルを作成します。
WARファイル作成 mvn package このコマンドによって、カレントディレクトリからのディレクトリ構造(ツリー形式)は以下のようになりました。
カレントディレクトリからのディレクトリ構造 ###コマンド tree ###実行結果 . ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── ScrapeSongTitlesServlet.java │ │ └── resources │ └── test │ └── java └── target ├── classes │ └── com │ └── example │ └── ScrapeSongTitlesServlet.class ├── demo-1.0 │ ├── META-INF │ └── WEB-INF │ ├── classes │ │ └── com │ │ └── example │ │ └── ScrapeSongTitlesServlet.class │ └── lib │ └── jsoup-1.19.1.jar ├── demo-1.0.war ├── generated-sources │ └── annotations ├── maven-archiver │ └── pom.properties └── maven-status └── maven-compiler-plugin ├── compile │ └── default-compile │ ├── createdFiles.lst │ └── inputFiles.lst └── testCompile └── default-testCompile └── inputFiles.lst 29 directories, 10 files 手順2 Tomcatをインストールして起動確認 1. Tomcatのtarを持ってくる以下のページで、安定していそうなものとしてTomcat 9.0.104(9.0.xの中の最新版)を選択しました。
そしてTomcat 9のダウンロードページを選択し、
tar.gzのリンクを右クリックしてリンクのアドレスをコピーします。
カレントディレクトリ上で、コピーしたアドレスを使って以下のコマンドを実行し、tomcatのtar.gzをダウンロードします。
tar.gzのダウンロード wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.104/bin/apache-tomcat-9.0.104.tar.gz 2. tar.gzファイルを解凍続いて以下のコマンドを実行してtar.gzファイルを解凍します。
tar.gzのダウンロード tar -xzvf apache-tomcat-9.0.104.tar.gz 3. 起動確認Tomcatのbinディレクトリの中から以下の「startup.sh」を見つけます。
以下の、カレントディレクトリからの「startup.sh」の相対パスを貼り付けたコマンドでTomcat君を起動できます。
Tomcatの起動 apache-tomcat-9.0.104/bin/startup.sh 以下にアクセスしてみましょう。 こんな感じでTomcatのページが表示されれば正常に起動されています!
さあ、いよいよ手順1で作ったWARファイルをTomcatにデプロイしましょう。 以下のコマンドで、手順1で作ったWARファイルをTomcatのwebappsディレクトリにコピーします。
Tomcatの起動 cp target/demo-1.0.war apache-tomcat-9.0.104/webapps すると以下のようにwebapps配下に「demo-1.0」ディレクトリが自動作成されます。
この中のWEB-INFディレクトリに以下のような内容で「web.xml」ファイルを作成します。
web.xml <web-app> <servlet> <servlet-name>ScrapeSongTitlesServlet</servlet-name> <servlet-class>com.example.ScrapeSongTitlesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ScrapeSongTitlesServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> そして、以下のURL(localhost:8080/{WARファイルデプロイで自動作成されたディレクトリ名}/)にアクセスします。 アプリが正常にデプロイされていれば、以下のようにJavaプログラムが起動されていると思います!
今回は自分でWebアプリを作ってみたいなと思い、手始めにTomcatをインストールして簡単なアプリをデプロイしてみました。 楽しみながら開発を続けていけたらなと思っています! |







