Tomcat の一般的な例外と解決コードの例

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomcat でいくつかの例外が発生しました。参考までに、例外と解決策を以下に記録します。 (随時追加中…)

異常1:

1. ログの内容

org.apache.coyote.http11.AbstractHttp11Processor.process HTTP リクエスト ヘッダーの解析エラー
注意: HTTP ヘッダー解析エラーがさらに発生すると、DEBUG レベルでログに記録されます。
java.lang.IllegalArgumentException: メソッド名に無効な文字が見つかりました。HTTP メソッド名はトークンである必要があります
org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:233) で
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017) で
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) で
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) で
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) で
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) で
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) で
java.lang.Thread.run(Thread.java:745) で

2. 解決策

tomcat インストール フォルダーの conf/catalina.properties ファイルに次の行を追加します。

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

例外2:

1. ログの内容

com.alibaba.druid.stat.DruidStatService]mbean の登録解除エラー
javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidStatService
	com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) で
	com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:427) で
	com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:415) で
	com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:546) で
	com.alibaba.druid.stat.DruidStatService.unregisterMBean(DruidStatService.java:374) で
	com.alibaba.druid.stat.DruidDataSourceStatManager.removeDataSource(DruidDataSourceStatManager.java:202) で
	com.alibaba.druid.pool.DruidDataSource$2.run(DruidDataSource.java:1479) で
	java.security.AccessController.doPrivileged(ネイティブメソッド)
	com.alibaba.druid.pool.DruidDataSource.unregisterMbean(DruidDataSource.java:1475) で
	com.alibaba.druid.pool.DruidDataSource.close(DruidDataSource.java:1434) で
	sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で
	java.lang.reflect.Method.invoke(Method.java:606) で
	org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:354) で
	org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:277) で
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578) で
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554) で
	org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:972) で
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523) で
	org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:979) で
	org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1006) で
	org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:982) で
	org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:934) で
	org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:583) で
	org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:116) で
	org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4900) で
	org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5537) で
	org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:221) で
	org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1424) で
	org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1413) で
	java.util.concurrent.FutureTask.run(FutureTask.java:262) で
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) で
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で
	java.lang.Thread.run(Thread.java:745) で

2. 解決策

tomcat の bin ディレクトリにある catalina.sh ファイルを変更し、# OS 固有のサポートの間に JAVA_OPTS="-Ddruid.registerToSysProperty=true" を追加します。$var は true または false に設定する必要があります。および cygwin=false

例外3:

1. ログの内容

INFO [http-nio-80-exec-16] org.apache.coyote.http11.AbstractHttp11Processor.process HTTP リクエスト ヘッダーの解析エラー
 注意: HTTP ヘッダー解析エラーがさらに発生すると、DEBUG レベルでログに記録されます。
 java.lang.IllegalArgumentException: メソッド名に無効な文字が見つかりました。HTTP メソッド名はトークンである必要があります
	org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:236) で
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1065) で
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) で
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539) で
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495) で
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) で
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) で
	java.lang.Thread.run(Thread.java:745) で

2. 解決策

tomcat インストール フォルダーの conf/server.xml を変更します。<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize ="10240" redirectPort="8443" /> では、maxHttpHeaderSize の既定値は 8*1024 です。必要な値に調整するだけです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • SpringBoot プロジェクトがパッケージ化され、外部の Tomcat に公開されます (さまざまな例外を解決)
  • セマフォによるTomcatの異常終了の解決方法
  • Tomcat での jar のロードに関する異常な問題の分析と解決
  • tomcat6 の jsp でこの応答に対して getOutputStream() が既に呼び出されている例外の原因と解決策
  • tomcat の起動時にエラーが発生しました: プロキシが例外をスローしました: java.rmi.server.ExportException: ポートは既に使用されています: 1099 解決策
  • idea2020.2 が pom.xml ファイル Maven プラグイン tomcat7 でエラーに遭遇する問題を解決する
  • IDEA 構成の Tomcat 起動エラーの問題を解決する
  • SSM プロジェクトを Idea にインポートした後、Tomcat を起動するとエラー 404 が発生する問題を解決します。
  • Tomcat 起動エラー: java.util.zip.ZipException の解決方法
  • Tomcat 例外の解決方法 (リクエスト ターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています)

<<:  VUEはG2チャートを使用した実装を導入します

>>:  MySQL のインデックス障害の一般的なシナリオと回避方法

推薦する

Windows 10 で Hyper-V サービスをシャットダウンするいくつかの方法

VMware Workstation を使用して Windows 10 で仮想マシンを開くと、VMw...

GitHub のサードパーティ認証方式を Vue で実装する例

目次OAuth アプリの作成コードを取得するaccess_tokenを取得するユーザー情報を取得する...

Vue フロントエンドで PDF を生成してダウンロードする方法

目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...

vue+echartsチャートの使用に関する問題記録

序文echarts は私が最もよく使用するチャート作成ツールであり、非常に完全なエコシステムとコンテ...

K3s 入門ガイド - Docker で K3s を実行するための詳細なチュートリアル

k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

Dockerを使用してPythonランタイム環境の基本イメージを作成する方法

1. 準備1.1 Pythonインストールパッケージをダウンロードします(注:Pythonバージョン...

年末ですが、MySQL パスワードは安全ですか?

序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...

よく知られているブラウザのDOCTYPEモード選択メカニズム

ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...

Tencent Cloudでhive3.1.2を構築する方法を教えます

環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...

HTM と HTML の違いは何ですか? HTM と HTML の違いは何ですか?

Web デザインを学習する過程で、html と htm の関係など、遭遇した多くの問題について深く...

Ubuntu 上の MySQL における中国語文字化け問題の解決方法

問題を見つける最近 Django を学習しているのですが、MySQL データと組み合わせてデータを挿...

jQueryチェーン呼び出しの詳細な説明

目次チェーン呼び出し小さなケースチェーン呼び出しjQuery オブジェクトが任意のメソッド (ノード...

CSS 兄弟要素フローティング分析の概要

float:左/右/なし; 1. 同じレベルフローティング(1)ブロックレベル要素を同じ行に表示する...