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 のインデックス障害の一般的なシナリオと回避方法

推薦する

閲覧時に作成されたWebページの下部にある余分な空白スペースを削除する方法

Dreamweaver または FrontPage を使用して HTML Web ページを作成する場...

mysql8.0.19 でパスワードを忘れた場合の完璧な解決策

おすすめの読み物: MySQL 8.0.19 は、間違ったパスワードを 3 回入力するとアカウント ...

CSS フォント、テキスト、リストのプロパティの詳細な紹介

1. フォントのプロパティcolorは、div{color:red;}のようにテキストの色を指定しま...

数千万データを持つMySQLテーブルを最適化する実践記録

序文まずここで説明させてください。インターネット上では、Alibaba では 500 万のデータを異...

JavaScript の高度なクロージャの説明

目次1. 閉鎖の概念追加の知識ポイント: 2. 閉鎖の役割: 3. 閉鎖例3.1 liをクリックする...

MySQL ストアド プロシージャにおけるループ ステートメント (WHILE、REPEAT、LOOP) の使用法の分析

この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHIL...

MySQLストレージ時間タイプの選択に関する問題の説明

MySQL では、datetime 型は通常、時間を保存するために使用されますが、現在では多くのシス...

同期スクロールを実現するための複数のテーブル要素のサンプルコード

Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...

MySQLコンテナ間のレプリケーション構成例の詳細な説明

背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...

MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明

MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...

HTML で div+CSS を使用してシンプルな矢印アイコンを実装するコード

ウェブデザインでは、ウェブページを美しく見せるために矢印を装飾としてよく使用します。現在、多くのウェ...

浮遊要素によって引き起こされる問題と解決策の詳細な説明

1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...

HTML印刷関連の操作と実装の詳細な説明

原則的にはwindow.print()メソッドを呼び出すことですが、このメソッドは現在のページ全体を...

CSS クロスブラウザ スタイルのバグのデバッグについて

まず最初に、適切なブラウザを選択します。私が Chrome を選択したのは、その強力なデバッグ ツー...

Linux yum コマンドを使用して mysql8.0 をインストールする方法の詳細なチュートリアル

1. 設置前によく掃除する rpm -pa | grep mysql または rpm -qa | g...