NetBeans6.0でWebサービスを作成してみた

5.5.1から何も変わっていないだろうと高をくくっていたが、WEBサービスの新規作成ウィザードを終え、ソースを開くとそこに表示されていたのは!

えらい、小奇麗な画面が。ここでオペレーションを一覧で見たり追加したり出来るようだ。実装する場合ソースを真っ先に開くのでおいらはあまり恩恵はないのだろうけど、他人のソースを開くときには多少は意味はあるかな。

サーバー側のソースはこんな感じ。WebサービスってNetBeansだと一番簡単に書けるよね。Webアプリを作るよりはるかに楽。ちなみにreturnの行しかコードは書いてない。あとはすべて自動生成だ。

package ws;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

/**
 *
 * @author shin
 */
@WebService()
public class NewWebService {
    /**
     * Web service operation
     */
    @WebMethod
    public String operation(@WebParam(name = "name") String name) {
        
        return "はろー"+name+"さん";
    }
    
}

さっそくWebサービスクライアントを作り、実行!・・・あれ?エラーが出る。

com.sun.xml.wsのパッケージからなる実装がないとかいいやがる。そこでJAX-WS2.1のライブラリをクライアントに追加したら動いた。

うーん、前からこんなんだったっけ?

気になったので、5.5.1を起動、プロジェクトを新規作成、WebサービスをglassfishV2にデプロイ。クライアントを作成、JAX-WSのライブラリを入れないで実行・・・問題なく動いた。

なんだろ、これ。違いといえばNetbeans6.0はTomcat6.0で作成、5.5.1はglassfishV2で作成していることくらい。glassfishV2は2.0で動いているということ?そもそもJavaSE6.0u4でJAX-WSのバージョンが2.1にあがったんじゃなかったっけ?

謎は深まる。


そういや今のflashってSOAPクライアント機能があるんだよね。フロントエンドは完全にフラッシュにしてしまってあらゆるロジックを鯖側で作ったほうが楽かもしれない。表示と入力のみ担当させるとはいえActionScriptはちょっと開発がきついな。

SOAPといえば重くて使い物にならなくて採用を取りやめたのが今から5年ほど前。今はどれくらいの速度なんだろうか。

System.nanoTime()を使って時間を計測すると応答は5ms未満がほとんど。スペック的に高いわけではない比較的軽量なノートPCでこれなのだからもうSOAP(Webサービス)がネックになってるところはないんじゃないかな。応答時間の一番のネックはHTTPであることを考えるとWebサービスが重いということはもうないだろうなぁ。マシンスペックも上がったし、JavaVMも大幅に高速化してるし、XMLのパースも高速化してるし。

ちなみにJavaSE5以上使ってる人で実行時間計測する場合はSystem.nanoTime()を使おう。現在の環境で最も精度の高いタイマを使って取得してくれる。currentTimeMillis()は現在時刻をmsで返すために値の正確性は弱いが、nanoTime()は差分でしか意味を成さない代わりに非常に使える。ゲームやデスクトップアプリなどはJavSE6を使うのが望ましいためにcurrentTimeMillis()を使うことはもうないだろう。業務アプリなんかは現在の時刻を取得したい場合通常はDateやCalendarを使うからなおさら。