AxisのjarがServletコンテナの起動を邪魔していた!?

中山テック 代表の中山です。

さて、技術者の方々はWSDLをご存知でしょうか。

SOAPという通信規格を使用し、XML形式で送受信を行うためのインタフェース言語になります。

WEBサービスとしてこのような形式で実装しているシステムが多々あります。

そしてこれを実現するために「Apache Axis」というフレームワークが広く使われるようになりました。

現在ではAxis2.Xとして世に出回っておりますが、その前身である「Axis1.X」についてのお話となります。

冒頭でもお話しましたが、WEBサービス実現のためのフレームワークになります。

WSDLを使ってWEBサービスを実現しようと思うのであれば必須のフレームワークとなります。

しかし、このAxis1.Xは非常に癖が強く、バージョンによって動きが結構異なります。

事実Axis1.Xは2006年で開発を終了しており、Axis2.Xへ移行することになりました。

Axis1.Xのバージョンを確認する

もしAxis1.xが実装されているシステムで最新でなければ最終更新版をダウンロードしましょう。

ちなみに、Axis1.Xと2.Xには互換性はないのでAxis1.Xの最新版にします。

ダウンロードはAxis1.Xのダウンロードページから最新版を落としましょう。

  • 関連記事

Axis1.Xが悪さをしているケース

<<1.Javaバージョン、コンテナのバージョンを上げた場合>>

当然ですが、2006年で開発が終わっているので

Javaのバージョンやコンテナのバージョンが上がった時の動作保証はありません。

バージョンアップした場合、動作確認してExceptionが出たらまずAxis1.Xを疑ってもいいかもしれません。

※org.apache.axis~といったExceptionが出ます

<<2.循環継承している>>

レアケースだと思いますが、循環継承をしている場合があります。

代表が遭遇したのは「org.apache.axis.constants.Scope」と

「org.apache.axis.enum.Scope」の循環継承です。

これにより、アプリが延々と継承をし続け、ヒープ領域の枯渇を引き起こしたことがありました。

<<3.その他>>

もしAxis1.X最新版でもうまく行かない場合はAxis2.Xへの以降をおススメします(笑)

まとめ

WEBサービスを実現するために使われるWSDLですが、フレームワークが邪魔をする可能性もあり

特性や評判を考えながら導入するのが良いでしょう。

ちなみにAxis1.Xは当の開発者であるApacheも下記のように声明文を発表しています。

内部的に不適切な実装が多く(オンメモリのみの前提、内部完結の通信でも外部になげるなど)、実使用に堪えない。Axisプロジェクト自身もAxisを公開していることを外部に公表しないように呼びかけている

(Wikipedia Apache Axisのページから引用)

ということでApache2.Xの導入か別の手段を選ぶのが吉かもしれません。

※中山テックに掲載しているゲーム画像の著作権、商標権、その他知的財産権は、当該コンテンツの提供元に帰属します


おすすめの記事