なげぇタイトルだな。。。
さて、掲題の通り、Axis2の最新版でEclipseのデプロイ機能使ってWebサービスを作成していたら、POJO作ってSOAPでは正常にアクセスできるのに、RESTでは
org.apache.axis2.AxisFault: The ServiceClass object does not implement the required method in the following form: OMElement add(OMElement e)
みたいなエラーがでて、四苦八苦したので、メモ。
そもそもに、このエラーはバージョン1.7の時に結構話題になっていた。service.xlmもしくはaxis2.xmlの中のmessageReceiverの内容が古いモノをさしているので、問題になっているって奴。自分でも書いていた。
で、最新の1.7.4で見てみたら、確かにこの部分は修正されているのに、どうやっても、このエラーが消えないのだ。。。う~ん、こまったと思っていたら、ふと、自分のサービス内に自動的に作成されるAxis2のバージョンを示すサービス/Version/getVersionが動くことがわかった。。。
ん?なんで動くの???
ということで、こいつの実体「/WebContent/WEB-INF/services/Sample/version.aar」の中身をのぞいてみた。aarはAxis2のアーカイブで、実体はWar、つまりJar、Zip。なので、名称変えてZip解凍。そしたら、あ~た、Service.xmlにこんな風に書いてアルじゃあ~りませんか!!!
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
ということで、クラス名が違うんですわ。元のサービス内でこのクラス名を指定してやったら、あっさり動いた。。。
俺の2時間位を返してくれ。。。orz
まぁ解決して良かったけど。。。