プロビジョニングサービスの実装は、JAX-WSフレームワークを利用することを推奨します。Systemwalker Service Catalog ManagerはJAX-WSフレームワークを利用してWebサービスにアクセスするためのJavaインターフェースを.jarファイルとして同梱しています。Javaコードを書くときにこの.jarファイルをインクルードすれば、Webサービスのクライアント機能およびサーバ機能を実装できます。この場合、WSDLからコードを生成する必要ありません。
Java EE環境では、Webサービスのクライアント機能およびサーバ機能の双方を配備できます。
クライアント機能(アプリケーションからSystemwalker Service Catalog Managerへの呼び出し)
Webサービスのクライアント機能の実装のため、JAX-WSはWSDLで定義したWebサービスを直接呼び出すAPIと、インターフェースのプロキシの実装を取得するAPIを提供しています。
公開されているWSDLを利用して、Webサービスのクライアントを作るには、以下のようなコードを利用します。
final URL wsdlLocation = new URL("https://myServer:8081 /ServiceProvisioningService/v1.4/BASIC?wsdl") final javax.xml.namespace.QName serviceName = new QName ("http://bss.fujitsu.com/xsd/v1.4", "SessionService"); final javax.xml.ws.Service service = Service.create(wsdlLocation, serviceName); final SessionService sessionService = service.getPort(SessionService.class); java.util.Map<String, Object> requestContext = ((BindingProvider)sessionService).getRequestContext(); requestContext.put(BindingProvider.USERNAME_PROPERTY, username); requestContext.put(BindingProvider.PASSWORD_PROPERTY, password); // 以上により、サービスがローカルに実装されている場合と全く同じように、サービスに直接アクセスできます。 sessionService.resolveUserToken(...);
サーバ機能(Systemwalker Service Catalog Managerからアプリケーションへの呼び出し)
JAX-WSフレームワークでWebサービスのサーバ機能を提供するということは、サービスインターフェースを実装し、これを公開するためのアノテーションを付けることを意味します。
技術サービスがJava EEに準拠したアプリケーションサーバに配備される場合、プロビジョニングサービスはアノテーション付のBeanとして配備できます。このBeanをJ2EEアプリケーションとして実装する場合は、ステートレスBeanとして実装できます。あるいは、Webアプリケーションの一部として配備する場合は、標準Javaオブジェクトとして実装できます。いずれの場合も、必要なアノテーションは、サービスのインターフェース定義を参照するjavax.jws.WebServiceです。
プロビジョニングサービスでは、Systemwalker Service Catalog ManagerのプロビジョニングAPIを実装する必要があります。これは、たとえば以下のようになります。
@WebService(serviceName = "ProvisioningService", targetNamespace = "http://bss.fujitsu.com/xsd/v1.3", endpointInterface = "com.fujitsu.bss.provisioning.intf.ProvisioningService") public class MyProvisioningServiceImpl implements ProvisioningService { //... }
ターゲットの名前空間は、インターフェースに定義されているものと完全に同一にします。
endpointInterface属性はWebサービスを定義しているインターフェースを参照しています。これによって、実装クラスがそれぞれのJavaメソッドの実装を提供できるようになります。Webサービスに関連するアノテーションは、すべてこのインターフェースから継承されます。
アプリケーションがJava EEに準拠したアプリケーションサーバには配備されないJavaアプリケーションである場合には、JAX-WSが提供しているAPIを使用してWebサービスを公開することができます。
import javax.xml.ws.Endpoint; public static void main(String[] args) { Endpoint.publish( "https://www.example.com/MyService/provisioningServices", new MyProvisioningServiceImpl());}