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

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

新規登録して質問してみよう
ただいま回答率
85.31%
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コンテナです。

Q&A

解決済

1回答

5913閲覧

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

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コンテナです。

0グッド

0クリップ

投稿2022/01/19 04:07

編集2022/01/19 11:08

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

1<?xml version="1.0" encoding="UTF-8"?> 2<Server port="8005" shutdown="SHUTDOWN"> 3 <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> 4 <!-- Security listener. Documentation at /docs/config/listeners.html 5 <Listener className="org.apache.catalina.security.SecurityListener" /> 6 --> 7 <!-- Prevent memory leaks due to use of particular java/javax APIs--> 8 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 9 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 10 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 11 <GlobalNamingResources> 12 <Resource name="UserDatabase" auth="Container" 13 type="org.apache.catalina.UserDatabase" 14 description="User database that can be updated and saved" 15 factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 16 pathname="conf/tomcat-users.xml" /> 17 </GlobalNamingResources> 18 19 <Service name="Catalina"> 20 <!-- 21 <Connector port="8080" protocol="HTTP/1.1" 22 connectionTimeout="20000" 23 redirectPort="8443" /> 24 --> 25 <Connector protocol="AJP/1.3" 26 address="127.0.0.1" 27 port="8009" 28 secretRequired="false" 29 redirectPort="8443" /> 30 31 <Engine name="Catalina" defaultHost="localhost"> 32 <Realm className="org.apache.catalina.realm.LockOutRealm"> 33 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 34 resourceName="UserDatabase"/> 35 </Realm> 36 37 <Host name="localhost" appBase="webapps" 38 unpackWARs="true" autoDeploy="true"> 39 40 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 41 prefix="localhost_access_log" suffix=".txt" 42 pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 43 </Host> 44 </Engine> 45 </Service> 46</Server> 47

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

1<?xml version="1.0" encoding="UTF-8"?> 2<Context path="/app3" docBase="/opt/hogehoge_company/java_production/app3/webapps/sample3.war" workDir="/opt/hogehoge_company/java_production/app3/work" reloadable="true"> 3 <Resources allowLinking="true" /> 4</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のコンテキストパスの設定に詳しい方がいましたらご回答いただけないでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下の修正を行ったところ、Tomcatのエラーが解消されました。
1.Dockerfileでwarファイルの配置フォルダを作成しそこにwarを配置するように変更

#warファイル配置用フォルダの作成
RUN mkdir -p ${CATALINA_BASE}/store

COPY ./sample3.war ${CATALINA_BASE}/store/

2.app3.xmlのdocBaseを以下に修正
<Context path="/app3" docBase="/opt/hogehoge_company/java_production/app3/store/sample3.war" reloadable="true">

お騒がせしました。

投稿2022/01/19 13:17

Linkey

総合スコア77

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問