JavaEE5は、Webサービスまで作れるみたいなので、作ってみようと思う。
俺のBlogの書き方には二通りあって、やったことを整理して書くのと、やりながら書くのがある。
今回は、やりながら書くので、もしかしたら最終的には諦めてるBlogになってるかもしれないのであしからず。
まずは、HelloWebServiceという名前でエンタープライズアプリケーションを作成する。
HelloWebService-ejbw右クリックして新規作成から、Webサービスを選択する。
com.wankuma.kazuki.webservice.HelloWebServiceという名前で作成した。
そうすると、何かデザイナが表示される。
オペレーションを追加というそれっぽいボタンがあるので押してみる。
そうすると、メソッドを作成するためのダイアログが表示されるので、適当に入力するとよさそう。
ここでは、String greet(String name)という感じのメソッドを作るようにした。
作成後に、コードエディタを開いてみると下のようなコードになっていた。
@WebServiceアノテーションに@Statelessアノテーションがついたクラスが出来ている。
@WebMethodや@WebParamもついていて、見た目どんなものになるのか想像できるような雰囲気のコードが出来てる。
package com.wankuma.kazuki.webservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ejb.Stateless;
@WebService()
@Stateless()
public class HelloWebService {
/**
* Web service operation
*/
@WebMethod(operationName = "greet")
public String greet(@WebParam(name = "name") String name) {
//TODO 実装コードをここに記述します:
return null;
}
}
ご丁寧に、TODOまで書かれてるので実装してみた。
@WebMethod(operationName = "greet")
public String greet(@WebParam(name = "name") String name) {
return "Hello world!!" + name;
}
そして、おもむろにF6を押して実行!!GlassFishに配備され、Hello world!!と書かれたブラウザが立ち上がる。
できた~!と思わないほうがいい。これはエンタープライズアプリケーションを作ったときに出来る、普通のWebアプリケーションのデフォの画面です。
実行するのにそれっぽいのが無いかと探してみると発見。Webサービスの右クリックメニューからWebサービスをテストというのがあった。
そうすると、下のような画面が立ち上がる。
名前にかずきと入力してボタンをぽちっとすると文字化けorz
テスト用画面の問題なんだろうか?それとも俺が悪いのだろうか?
文字コードの指定とかを何処にもしてない気がするから、抜けてるのかな。
とりあえず、メインマシンから(Webサービス作ったのはノートPC)WPFアプリケーションをこさえてWebサービスを呼び出すようにしてみた。
さくっと作ってみたら日本語もOKだった。多分テスト用の画面がいけてないだけなんだろう。
![image](http://kazuki.wankuma.com/images/2008/04/NetBeansJavaWeb_147A1/image_thumb_9.png)