Webサービス
この章は、Webサービスで送出する例外のメッセージと対処方法について説明します。
- 太字の文字列のメッセージがログに出力されます。
- <>で囲まれた部分は可変部分となります。
7. WebOTX Webサービス(JAX-WS)
7.1. Webサービス本体
7.1.1. 例外メッセージ
JAX-WSが出力するエラーメッセージと、その対処方法について説明します。
- WSSERVLET11: failed to parse runtime descriptor: <detail>
- [可変情報]
- <detail> : エラーの詳細
- [説明]
- JAX-WSの配備記述子(nec-jaxws.xml)を読み込んだ時にエラーが発生した場合に出力されます。
- [対処]
- <defail>のエラーメッセージの内容を確認の上、ネームスペース記述や、要素の整合性など、配備記述子の内容を確認してください。
- WSSERVLET16: missing context information
- [説明]
- Webサービスランタイムのサーブレット初期化時に、そのサーブレットからWebサービスのエンドポイント情報が見つからない場合に出力されます。
- [対処]
- JAX-WSの配備記述子(nec-jaxws.xml)の<endpoints>要素に<endpoint>要素が含まれるか確認してください。
- WSSERVLET17: duplicate endpoint name
- [説明]
- JAX-WSの配備記述子(nec-jaxws.xml)に同じname属性をもつ複数のエンドポイント情報がある場合に出力されます。
- [対処]
- 配備記述子の<endpoint>要素のname属性に重複がないか確認してください。
- WSSERVLET26: duplicate URL pattern in endpoint:<endpoint_name>
- [可変情報]
- <endpoint_name> : エンドポイント名
- [説明]
- 同じ名前のエンドポイントURLが登録された場合に出力されます。
- [対処]
- <endpoint_name>に出力されているエンドポイント名を確認の上、JAX-WSの配備記述子(nec-jaxws.xml)の<endpoint>要素のurl-pattern属性が重複していないか確認してください。
- WSSERVLET27: unsupported implicit URL pattern in endpoint: <endpoint_name>
- [可変情報]
- <endpoint_name> : エンドポイント名
- [説明]
- エンドポイントURLが暗黙URL(URLに"*."を利用している)の場合に出力されます。暗黙URLはサポートしていません。
- [対処]
- <endpoint_name>に出力されているエンドポイント名を確認の上、JAX-WSの配備記述子(nec-jaxws.xml)の<endpoint>要素のurl-pattern属性の内容を確認してください。
- WSSERVLET43: failed to instantiate service implementor for port <web_services_endpoint_class>
- [可変情報]
- <web_services_endpoint_class> : Webサービスエンドポイントクラス名
- [説明]
- <web_services_endpoint_class>で定義されているWebサービスエンドポイントクラスを生成するときに、コンストラクタにアクセスできなかった場合や、抽象クラス、インタフェースを指定していた場合などに出力されます。
- [対処]
- Webサービスエンドポイントクラスの実装を確認してください。
- WSSERVLET50: caught throwable during servlet initialization: <detail>
- [可変情報]
- <detail> : エラーの詳細
- [説明]
- Webサービスランタイムのサーブレットの初期化時にエラーが発生した場合に出力されます。
- [対処]
- <defail>のエラーの内容を確認の上、配備記述子(nec-web.xml,nec-jaxws.xml,web.xml)が配備したwarファイルに含まれているか、またその配備記述子の記述が正しいか確認してください。
8. WebOTX Webサービス(JAX-RS)
8.1. Webサービス本体
8.1.1. 例外メッセージ
JAX-RSが出力するエラーメッセージと、その対処方法について説明します。
- A (sub-)resource method,<method_info>, should have only one HTTP method designator. It currently has the following designators defined:<method_id>
- [ログレベル]
- INFO
- [可変情報]
- <method_info> : リソースメソッドのアクセス修飾子、戻り値の型、メソッド名
<method_id> : 使用しているメソッド識別子。例えば、@GETとPOSTを指定した場合の内容は[@jakarta.ws.rs.GET(), jakarta.ws.rs.POST()]になる。
- [説明]
- 1つのリソースメソッドに、2つ以上のHTTPメソッド識別子が使用されています。
- [対処]
- リソースメソッドにはHTTPメソッド識別子を1つだけ使用してください。
- Mapped exception to response: 405
jakarta.ws.rs.WebApplicationException
- [ログレベル]
- INFO
- [説明]
- 以下のいずれかになります。
(1)HTTPリクエストに対し、ディスパッチするリソースメソッドが一つも存在しない
(2)リソースメソッドに定義する@HttpMethodアノテーションに指定するメソッド名がGET、POST、PUT、DELETE、HEAD、OPTIONS以外である
(3)HTTPリクエストに対し、リクエストメソッドはリソースメソッドで定義されていない、または一致していない
- [対処]
- (1)リソースメソッドを追加してください。
(2)@HttpMethodアノテーションに指定するメソッド名をGET、POST、PUT、DELETE、HEAD、OPTIONSのいずれかに修正してください。
(3)HTTPリクエストに対し、リクエストメソッドはリソースメソッドで定義されているか、または一致しているか確認ください。
- A resource method,<method_info>, MUST be public scoped otherwise the method is ignored
- [ログレベル]
- INFO
- [可変情報]
- <method_info> : リソースメソッドのアクセス修飾子、戻り値の型、メソッド名
- [説明]
- リソースメソッドはpublic以外のメソッドです。
- [対処]
- リソースメソッドをpublicメソッドに変更してください。
- Producing media type conflict. The resource methods<method_info> can not produce the same media type
- [ログレベル]
- INFO
- [可変情報]
- <method_info> : リソースメソッドのアクセス修飾子、戻り値の型、メソッド名
- [説明]
- 2つ以上のリソースメソッドまたはサブリソースメソッドのリクエストメソッドの識別子、パス、MIMEメディアタイプなどが同じです。
- [対処]
- リソースメソッドまたはサブリソースメソッドのリクエストメソッドの識別子、パス、MIMEメディアタイプのいずれかを他のリソースメソッド(サブリソースメソッド)と違うものに変更してください。
- The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
com.nec.webotx.jersey.spi.inject.Errors$ErrorMessagesException
- [ログレベル]
- INFO
- [説明]
- 2つ以上のリソースメソッドまたはサブリソースメソッドのリクエストメソッドの識別子、パス、MIMEメディアタイプなどが同じです。
- [対処]
- リソースメソッドまたはサブリソースメソッドのリクエストメソッドの識別子、パス、MIMEメディアタイプのいずれかを他のリソースメソッド(サブリソースメソッド)と違うものに変更してください。
- Mapped exception to response: 415 (Unsupported Media Type)
jakarta.ws.rs.WebApplicationException
- [ログレベル]
- INFO
- [説明]
- HTTPリクエストのContent-Typeヘッダが、どのConsumesアノテーションにも一致していません。
- [対処]
- HTTPリクエストのContent-Typeヘッダに一致するConsumesアノテーションがあるか確認ください。
- jakarta.ws.rs.WebApplicationException:java.lang.IllegalArgumentException: Error parsing media type<media_type>
- [ログレベル]
- INFO
- [可変情報]
- <media_type> : 受信メッセージのメディアタイプ
- [説明]
- 受信メッセージのメディアタイプのフォーマットは正しくありません。
- [対処]
- 受信メッセージのメディアタイプのフォーマットか正しいか確認ください。
- No provider classes found.
- [ログレベル]
- INFO
- [説明]
- 以下のいずれかになります。
(1)@Consumesあるいは@Producesアノテーションに設定した値において、フォーマットが正しくないMIMEメディアタイプを設定している。
(2)リソースロケータのパラメータのうち、@DefaultValueアノテーションで指定しているデフォルト値の型は、該当パラメータの型と一致していない。
- [対処]
- (1)@Consumesあるいは@Producesアノテーションに設定した値において、フォーマットが正しいMIMEメディアタイプに変更ください。
(2)@DefaultValueアノテーションで指定しているデフォルト値の型は、該当パラメータの型と一致させてください。
- Mapped exception to response: 406 (Not Acceptable)
jakarta.ws.rs.WebApplicationException
- [ログレベル]
- INFO
- [説明]
- リソースが設定した@ProducesアノテーションのメディアタイプはHTTPリクエストのAcceptヘッダの値と一致していません。
- [対処]
- リソースが設定した@ProducesアノテーションのメディアタイプはHTTPリクエストのAcceptヘッダの値と一致させてください。
- The media type format is error:<media_type>
- [ログレベル]
- INFO
- [可変情報]
- <media_type> : 受信メッセージのメディアタイプ
- [説明]
- @Producesアノテーションに設定する値に正しくないMIMEメディアタイプを設定しています。
- [対処]
- @Producesアノテーションに設定する値のフォーマットが正しいか確認ください。
- A (sub-)resource method,<method_info>, should have only one HTTP method designator. It currently has the following designators defined: ,<method_designator>
- [ログレベル]
- INFO
- [可変情報]
- <method_info> : リソースメソッドのアクセス修飾子、戻り値の型、メソッド名
<method_designator> : HTTPメソッドの識別子
- [説明]
- 1つのリソースメソッドに対し、2つ以上のリクエストメソッド識別子を使用しています。
- [対処]
- リクエストメソッド識別子は1つだけにしてください。
- jersey.api.NotFoundException: null for uri:<uri>
- [ログレベル]
- INFO
- [可変情報]
- <uri> : HTTPリクエストのURI
- [説明]
- HTTPリクエストに対し、リクエストメソッドはリソース?メソッドで定義されていない、または一致していません。
- [対処]
- HTTPリクエストに対し、リクエストメソッドはリソース?メソッドで定義されているか、または一致しているか確認ください。
- A sub-resource locator, <locator_info>, can not have an entity parameter. Try to move the parameter to the corresponding resource method
- [ログレベル]
- INFO
- [可変情報]
- <locator_info> : サブリソースロケータのアクセス修飾子、戻り値の型、メソッド名
- [説明]
- サブリソースロケータのパラメータとしてエンティティパラメータを使用しています。
- [対処]
- サブリソースロケータのパラメータとしてエンティティパラメータは使用できません。パラメータの削除あるいはアノテーションパラメータを変更してください。
- A sub-resource locator,<locator_info>, MUST be public scoped otherwise the method is ignored
- [ログレベル]
- INFO
- [可変情報]
- <locator_info> : サブリソースロケータのアクセス修飾子、戻り値の型、メソッド名
- [説明]
- サブリソースロケータはpublic以外のメソッドです。
- [対処]
- サブリソースロケータをpublicメソッドに変更してください。
- A sub-resource locator, <locator_info>, MUST return a non-void type.
- [ログレベル]
- INFO
- [可変情報]
- <locator_info> : サブリソースロケータのアクセス修飾子、戻り値の型、メソッド名
- [説明]
- サブリソースロケータの戻り値の型がvoidです。
- [対処]
- サブリソースロケータの戻り値の型をvoid以外に変更してください。
- com.nec.webotx.jersey.api.NotFoundException: null for uri:<uri>
- [ログレベル]
- INFO
- [可変情報]
- <uri> : HTTPリクエストのURI
- [説明]
- サブリソースロケータの戻り値はnullです。
- [対処]
- サブリソースロケータの戻り値はnullにできません。null以外を返却するようにしてください。
- A HTTP GET method,<method_info>MUST return a non-void type.
- [ログレベル]
- INFO
- [可変情報]
- <method_info> : リソースメソッドのアクセス修飾子、戻り値の型、メソッド名
- [説明]
- httpメソッドがGETの場合、戻り値の型は「void」以外でなければなりません。
- [対処]
- 戻り値の型を「void」以外に変更してください。