web-dev-qa-db-ja.com

RaspberryPi上のJava 8のTomcat7

[〜#〜] update [〜#〜]必要に応じて/ manager /ページを開くことができるため、Tomcat8はこのシナリオで機能するようです。これはここでの元の問題状態を解決しませんが、このシナリオではdebianバックポートからTomcat8を使用することをお勧めします!

Raspbianは現在のJava 8バージョンで

root@raspberrypi:/etc/apt# Java -version
Java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

tomcat 7をインストールした後、私はdebianバックポートによって提供されるTomcat7バージョンに戻りました。

root@raspberrypi:/etc/apt# dpkg -l |grep Tomcat
ii  libtomcat7-Java                       7.0.56-1~bpo70+2                        all          Servlet and JSP engine -- core libraries
ii  Tomcat7                               7.0.56-1~bpo70+2                        all          Servlet and JSP engine
ii  Tomcat7-admin                         7.0.56-1~bpo70+2                        all          Servlet and JSP engine -- admin web applications
ii  Tomcat7-common                        7.0.56-1~bpo70+2                        all          Servlet and JSP engine -- common files

Tomcat7はjspの例をコンパイルしていません によるとこれは機能するはずです。ただし、マネージャページに次のエラーが表示されるため、これは当てはまりません。

org.Apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [1] in the generated Java file: [/var/lib/Tomcat7/work/Catalina/localhost/manager/org/Apache/jsp/index_jsp.Java]
The type Java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

Stacktrace:
    org.Apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.Java:103)
    org.Apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.Java:366)
    org.Apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.Java:477)
    org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:379)
    org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:354)
    org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:341)
    org.Apache.jasper.JspCompilationContext.compile(JspCompilationContext.Java:657)
    org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:357)
    org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:395)
    org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.Java:727)
    org.Apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.Java:213)
    org.Apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.Java:108)

ここでの実際の問題が何であるかを誰かが知っていますか?

9
col.panic

質問で述べたように、Raspbianが提供するTomcatはJava 8では動作しません。 このブログ の指示に従ってTomcat8をインストールできました。回避するにはlinkrotと小さな間違いを修正し、そこにあるテキストをほぼ文字通り引用します(バージョン8.0.24用に更新):

RaspberryPiへのApacheTomcat8のインストール

私のRaspberryPiには、すでにApache 2 HTTPサーバーがインストールされているため、この記事では、Tomcatの基本的なインストールと構成を行います。まず、インストールされているすべてのパッケージを更新します。

$ Sudo apt-get update

Javaがすでにインストールされていることを確認してください:

pi@raspberrypi /usr/bin $ Java -version
Java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

Piユーザーのホームディレクトリにログインし、Tomcatの目的のリリースをダウンロードします。

$ wget http://mirrors.axint.net/Apache/Tomcat/tomcat-8/v8.0.24/bin/Apache-Tomcat-8.0.24.tar.gz

Zip形式のtarballを抽出します。

$ tar xvf Apache-Tomcat-8.0.24.tar.gz

~/Apache-Tomcat-8.0.24/conf/Tomcat-users.xmlのTomcat-users親要素の最後の子として次のユーザーXML要素を追加します(これにより、パスワードが「raspberry」である「system」という管理者アカウントが作成されます)。

<user username="system" password="raspberry" roles="manager-gui"/>

デフォルトでは、pi Linuxユーザーはそれらに書き込むことができないため、次のディレクトリのディレクトリ権限を変更します。

[注:リリース8.0.24のように、この手順を実行する必要はありませんでした。ディレクトリApache-Tomcat-8.0.24/work/Catalina]はありませんでした。

Tomcatという起動スクリプトを/etc/init.dディレクトリに追加します。このディレクトリには次の内容が含まれています。

#!/bin/sh
# /etc/init.d/Tomcat
# starts the Apache Tomcat service
### BEGIN INIT INFO
# Provides:          Tomcat
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop Tomcat application server
### END INIT INFO

export CATALINA_HOME="/home/pi/Apache-Tomcat-8.0.24"
case "$1" in
start)
  if [ -f $CATALINA_HOME/bin/startup.sh ];
  then
    echo $"Starting Tomcat"
    /bin/su pi $CATALINA_HOME/bin/startup.sh
  fi
  ;;
stop)
  if [ -f $CATALINA_HOME/bin/shutdown.sh ];
  then
    echo $"Stopping Tomcat"
    /bin/su pi $CATALINA_HOME/bin/shutdown.sh
  fi
  ;;
*)
  echo $"Usage: $0 {start|stop}"
  exit 1
  ;;
esac

Update-rc.dコマンドを使用して、適切なリンクを/etc/rc?.dディレクトリに追加します。

$ Sudo update-rc.d Tomcat defaults

Tomcatサーバーが起動することをテストします。

$ Sudo /etc/init.d/Tomcat start

Webクライアントで、ブラウザをhttp://”Raspberry Pi IP Address”:8080に向けます

Tomcat screenshot

Tomcatサーバーが停止することをテストします。

$ Sudo /etc/init.d/Tomcat stop

最後に、システムを再起動すると、Tomcatアプリケーションサーバーが起動時と同様にシステムのシャットダウン時に自動的に起動するはずです。

すべてのクレジットは、フライデーナイトプロジェクトに送られます。

指摘すべきことの1つは、ハードコアLinuxユーザーとして、このソリューションは少しハックに聞こえ、ユーザーのホームディレクトリにソフトウェアをインストールしますが、機能します。

21
Marcel Korpel