質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

解決済

Docker環境でコンテキスト.xmlを配置しTomcatを起動するとエラーが発生する

Linkey
Linkey

総合スコア77

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

1回答

0評価

0クリップ

628閲覧

投稿2022/01/19 04:07

編集2022/01/19 22:17

JavaとDockerを勉強しているものです。DockerfileでCentOS×Apache×Tomcatの環境を構築してから
warファイルとコンテキスト.xmlを配置してTomcatを起動したところ以下のエラーが発生しました。

19-Jan-2022 09:18:13.246 重大 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor 配備記述子 [/opt/hogehoge_company/java_production/app3/conf/Catalina/localhost/app3.xml] を配備中のエラーです [org.apache.catalina.webresources.StandardRoot@1d9c3671]の開始に失敗しました。 Caused by: java.lang.IllegalArgumentException: 指定された主リソースセット[/opt/hogehoge_company/java_production/app3/webapps/app3]は無効です。 ... 13 more 19-Jan-2022 09:18:13.249 情報 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor 配備記述子[/opt/hogehoge_company/java_production/app3/conf/Catalina/localhost/app3.xml]の展開が[31] msで終了しました。 19-Jan-2022 09:18:13.251 情報 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Webアプリケーションアーカイブ [/opt/hogehoge_company/java_production/app3/webapps/sample3.war] を配備します 19-Jan-2022 09:18:14.489 情報 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Web アプリケーションアーカイブ [/opt/hogehoge_company/java_production/app3/webapps/sample3.war] の配備は [1,238] ms で完了しました。 19-Jan-2022 09:18:14.490 情報 [main] org.apache.coyote.AbstractProtocol.start プロトコルハンドラー ["ajp-nio-127.0.0.1-8009"] を開始しました。 19-Jan-2022 09:18:14.495 情報 [main] org.apache.catalina.startup.Catalina.start Server startup in 1330 ms

実施した手順は以下になります。
1.ApacheとTomcat連携用にxmlファイルを用意する
server.xml

xml

<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <!-- Security listener. Documentation at /docs/config/listeners.html <Listener className="org.apache.catalina.security.SecurityListener" /> --> <!-- Prevent memory leaks due to use of particular java/javax APIs--> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <Connector protocol="AJP/1.3" address="127.0.0.1" port="8009" secretRequired="false" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> </Engine> </Service> </Server>

httpd.conf

ServerRoot "/etc/httpd" Listen 80 Include conf.modules.d/*.conf User apache Group apache ServerName localhost:80 <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "/var/www/html" <Directory "/var/www"> AllowOverride None # Allow open access: Require all granted </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.html </IfModule> <Files ".ht*"> Require all denied </Files> ErrorLog "logs/error_log" LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" combined </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" </IfModule> <Directory "/var/www/cgi-bin"> AllowOverride None Options None Require all granted </Directory> <IfModule mime_module> TypesConfig /etc/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddOutputFilter INCLUDES .shtml </IfModule> AddDefaultCharset UTF-8 <IfModule mime_magic_module> MIMEMagicFile conf/magic </IfModule> EnableSendfile on IncludeOptional conf.d/*.conf Include /etc/httpd/conf/extra/httpd-proxy.conf Suexec Off

00-proxy.conf

# This file configures all the proxy modules: LoadModule proxy_module modules/mod_proxy.so LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so #LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_express_module modules/mod_proxy_express.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

app3.xml

xml

<?xml version="1.0" encoding="UTF-8"?> <Context path="/app3" docBase="/opt/hogehoge_company/java_production/app3/webapps/sample3.war" workDir="/opt/hogehoge_company/java_production/app3/work" reloadable="true"> <Resources allowLinking="true" /> </Context>

2.Dockerfileを作成

FROM centos:7 RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; # Install Apache & Tomcat RUN yum -y update && \ yum -y install vim && \ yum -y install httpd && \ yum -y install httpd-tools && \ yum -y install wget && \ yum -y install tar && \ yum -y install vim && \ yum -y install autofs && \ yum -y install net-tools && \ yum -y install iproute # Prepare environment (環境変数) ENV JAVA_HOME /usr/java/default ENV CATALINA_HOME=/usr/local/tomcat ENV CATALINA_BASE=/opt/hogehoge_company/java_production/app3 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin ENV LANG="ja_JP UTF-8" \ LANGUAGE="ja_JP:ja" \ LC_ALL="ja_JP.UTF-8" \ TZ="Asia/Tokyo" #日本語化設定 RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # Install Oracle Java17 ENV JAVA_VERSION 17 RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \ https://download.oracle.com/java/${JAVA_VERSION}/latest/jdk-17_linux-x64_bin.rpm && \ yum -y localinstall jdk* #war配置用ディレクトリ作成 RUN mkdir -p ${CATALINA_BASE} && \ chown -R ${USER_NAME}:${GROUP_NAME} ${CATALINA_BASE} # Install Tomcat ENV TOMCAT_MAJOR 8 ENV TOMCAT_VERSION 8.5.73 RUN wget http://mirror.linux-ia64.org/apache/tomcat/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && \ tar -xvf apache-tomcat-${TOMCAT_VERSION}.tar.gz && \ rm apache-tomcat*.tar.gz && \ mv apache-tomcat* ${CATALINA_HOME} && \ cp -rp ${CATALINA_HOME}/conf ${CATALINA_BASE}/. RUN mkdir -p ${CATALINA_BASE}/logs/ RUN chmod +x ${CATALINA_HOME}/bin/*sh #tomcatユーザ作成 RUN groupadd -r tomcat && \ useradd -g tomcat -d ${CATALINA_HOME} -s /sbin/nologin tomcat && \ chown -R tomcat:tomcat ${CATALINA_HOME} ENV PATH $PATH:/usr/sbin #Apache Httpd自動起動有効 RUN systemctl enable httpd.service #tomcatの設定ファイルのバックアップ RUN cp -p /usr/local/tomcat/conf/tomcat-users.xml ${CATALINA_BASE}/conf/tomcat-users.xml_`date +%Y%m%d` RUN rm -rf ${CATALINA_HOME}/webapps.dist/* RUN rm -rf ${CATALINA_HOME}/webapps/* COPY ./sample3.war ${CATALINA_BASE}/webapps/ COPY server.xml ${CATALINA_BASE}/conf/server.xml COPY httpd.conf /etc/httpd/conf/httpd.conf RUN mkdir /etc/httpd/conf/extra COPY httpd-proxy.conf /etc/httpd/conf/extra/httpd-proxy.conf COPY 00-proxy.conf /etc/httpd/conf.modules.d/00-proxy.conf COPY app3.xml ${CATALINA_BASE}/conf/Catalina/localhost/ EXPOSE 80

3.Dockerfileからイメージを作成する

4.docker-composeでコンテナを起動する

5.コンテナにアクセスしてTomcatをログを確認するとエラーが出力される
Caused by: java.lang.IllegalArgumentException: 指定された主リソースセット[/opt/hogehoge_company/java_production/app3/webapps/app3]は無効です。

CATALINA_BASEのwebappsフォルダにはsample3.warとsample3フォルダがあります。
ls -la /opt/hogehoge_company/java_production/app3/webapps/

app3.xmlのdocBaseの設定でエラーが発生しているような気がしていて調べていますが、未だに解決できていません。
Tomcatのコンテキストパスの設定に詳しい方がいましたらご回答いただけないでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。