今どきSOAPなんてと思いますが、古いシステムとかだとまだまだ使われていたり。
JavaでJAX WSみたいなのはもう忘れてしまったので、Scalaでライブラリがないか調べてみました。
play-soap
play2.7でもちゃんと使えました
詳細はこっち
SOAPクライアントの生成手順
簡単にですが手順を残しておきます。
project/plugins.sbtを修正
リポジトリとプラグインを追加します。
resolvers += Resolver.url(
"play-sbt-plugins", url("https://dl.bintray.com/playframework/sbt-plugin-releases/")
)(Resolver.ivyStylePatterns)
addSbtPlugin("com.typesafe.sbt" % "sbt-play-soap" % "1.1.4")
wsdlを配置
「conf/wsdls」にクライアント生成元のwsdlファイルを配置します。
build.sbtを修正
WSDLファイルのパスと生成するクライアントクラスのパッケージを指定します。
(うまく設定すれば自動的に生成されるかもしれませんが、気持ち悪ので明示しました)
WsdlKeys.wsdlTasks in Compile := Seq(
WsdlKeys.WsdlTask(
(baseDirectory.value / "conf" / "wsdls" / "inventoryapi.wsdl").toURI.toURL,
packageName = Some("jp.co.rakuten.rms.inventoryapi")
)
)
コンパイル
「sbt compile」すると「target/scala-2.12/wsdl」の下にソースが出力されます。
これで、特になにもしなくてもSOAPクライアントが使えるようになります。
やはりSOAPは面倒くさいですね