Novell exteNd WebサービスSDK 5.0

よくある質問

目次

このFAQは、次の4つのセクションに分かれています。

これらの各セクションに対してよくある質問のリストは、次のとおりです。

インストール

Novell exteNd WebサービスSDKは何ですか?
なぜNovell exteNd WebサービスSDKが必要なのですか?
Novell exteNd WebサービスSDKはどこで使用できますか?
システムには何がインストールされますか?
どのようにシステムからNovell exteNd WebサービスSDKをアンインストールしますか?

はじめに

Webサービスはどこで実行されますか?
なぜサーブレットを使用するのですか? Javaクラスを展開するだけでも構いませんか?
wsdl2javaコンパイラでは何が実行されますか?
wsdl2javaをWSDLドキュメントで実行すると、次のような警告が表示されます。 「type <some type> not declared in namespace <some namespace>, using Object instead.」
xsd2javaコンパイラでは何が実行されますか?
rmi2soapコンパイラでは何が実行されますか?
rmi2wsdlコンパイラでは何が実行されますか?
rmi2wsdlを実行していますが、生成されたWSDLドキュメントにはSOAPバインドがないのですか?
jwebservツールでは何が実行されますか?
tcptunnelツールでは何が実行されますか?
java2rmiツールでは何が実行されますか?
クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" com.sssw.jbroker.web.ServiceException: bad content type = text/html
クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" javax.naming.NamingException: unable to load <some class>
クライアントを実行すると、次のような例外が発生します。 「com.sssw.jbroker.web.ServiceException: unable to find "jBroker" transport handler for <some protocol>
クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" java.rmi.ConnectException: Connection refused
クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" com.sssw.jbroker.web.mapping.MarshalerNotFoundException: no serializer found for <some class>
メモリを増設した状態では、Novell exteNd WebサービスSDKツールをどのように実行しますか?
「jwebserv」を起動すると、次のようなエラーメッセージが表示されます。 「failed to start web services server: "java.net.BindException: Address already in use

高度な問題

タイプマッピングは何ですか?
シリアライザは何ですか?
デシリアライザは何ですか?
マーシャラは何ですか?
なぜマーシャラが必要なのですか?
BeanMarshalerおよびPublicFieldMarshalerでは何が実行されますか?
Novell exteNd WSSDKタイプマッピングを java.util.Mapと置き換えることができますか?
wsdl2javaはIn/Outパラメータをどのように処理しますか?
wsdl2java and rmi2wsdlコンパイラはオーバーロードしたメソッド名をサポートしますか?
なぜrmi2wsdlは、Javeタイプがorg.w3c.dom.Elementの場合に生成されたWSDLドキュメントで「use=literal」に設定されるのですか ?
メソッド署名で要素と通常のJavaタイプを併用できないのはなぜですか?

SOAP、WSDLおよびXML

JAX-RPCは何ですか?
WS-Iは何ですか?
SOAPは何ですか?
SOAPはCORBAと同じですか?
SOAPメッセージはどのように表示されますか?
SOAPはほかのプログラミング言語またはプラットフォームに連携していますか?
SOAPはセキュリティモデルを定義していますか?
WSDLは何ですか?
XMLPは何ですか?
SOAP、WSDLおよびXMLについて利用できるほかのFAQはありますか?

インストール

質問:

Novell exteNd WebサービスSDKは何ですか?

回答:

Novell exteNd WebサービスSDKは、ランタイムでWebサービスクライアントおよびサーバアプリケーションを実行して展開するコンパイラです。 Novell exteNd WebサービスSDKは、100% 純粋なJava実装で、SOAPやWSDLのようなWebサービス標準をサポートしています。 これにより、Java RMIの一般的なプログラミングモデルがWebサービスの世界で実現されます。

Novell exteNd WSSDKコンパイラでは、既存のWebサービスにアクセスする必要のあるクライアントプログラムを開発するアプリケーションプログラマと、そのWebサービスを実装するサーバプログラムを開発するアプリケーションプログラマの両方をサポートします。 ランタイムでは、基礎となるXMLプロトコルの抽象概念としてスタブおよびスケルトンを提供します。


質問:

なぜNovell exteNd WebサービスSDKが必要なのですか?

回答:

Novell exteNd WebサービスSDKでは、SOAP上でプログラミングモデルを提供します。 クライアントは、低レベルのSOAP APIを使用する代わりに、WebサービスをリモートJavaオブジェクトとして呼び出すことができます。サーバ側のWebサービスは、Javaインタフェースの実装です。

質問:

Novell exteNd WebサービスSDKはどこで使用できますか?

回答:

Novell exteNd WebサービスSDKは主として次の2つの目的に使用されます。
  • Javaから既存のWebサービスを呼び出すこと。 Novell exteNd WSSDKを使用すると、一般的なRMIプログラミングモデルを使用してWeb上で実行しているSOAP 1.1 Webサービスと通信するJavaプログラムを開発できます。
  • 新しいSOAP 1.1 Webサービスを開発してWeb上に表示すること。 Novell exteNd WSSDKプログラミングモデルのサーバ実装では、アプリケーションのビジネスメソッドだけを実装する必要があります。 サーバは、標準J2EEサーブレットコンテナで展開されます。
Novell exteNd WSSDKでは、クライアントおよびサーバの両方の側面から開発をサポートしているため、SOAPプロトコルを介してメッセージを交換する完全なエンドツーエンドの分散型アプリケーションを作成する場合にも使用できます。 サーバ側Webサービスは、CORBAサーバ、EJBコンポーネント、JMS宛先などを含む既存のバックエンドシステムに委任することができます。

質問:

システムには何がインストールされますか?

回答:

Novell exteNd WebサービスSDKのインストールには、Novell exteNd WSSDKバイナリ、ライブラリ、ドキュメンテーション、およびサンプルプログラムが含まれます。 これらのファイルはインストールの際に指定したディレクトリに配置されます。

質問:

どのようにシステムからNovell exteNd WebサービスSDKをアンインストールしますか?

回答:

まず最初に、Novell exteNd WebサービスSDKをインストールしたディレクトリがCLASSPATHにあることを確認します。 次のコマンドを使用してアンインストールします。
 java -jar _uninst/uninstall.jar
これにより、アンインストールプロセスに進み、システムからNovell exteNd WSSDKファイルが削除されます。

はじめに

質問:

Webサービスはどこで実行されますか?

回答:

Webサービスは、J2EEサーブレットAPIをサポートするサーバで実行できます。 Novell exteNd WebサービスSDKでは、Webサービスを展開す単純なスタンドアロンのWebサーバもサポートしています。

質問:

なぜサーブレットを使用するのですか? Javaクラスを展開するだけでも構いませんか?

回答:

サーブレットは確実で標準的な展開環境を提供します。

質問:

wsdl2javaコンパイラでは何が実行されますか?

回答:

wsdl2javaコンパイラは、WSDLドキュメントをJava RMIに変換します。 portTypeは、その操作およびメッセージとともにWSDL定義に一致するメソッドを使用してJavaリモートインタフェースにマップされます。 Javaインタフェースが生成されると、wsdl2javaコンパイラはrmi2soapコンパイラを呼び出してSOAPスタブおよびスケルトンを作成します。 wsdl2javaの詳細については、チュートリアルを参照してください。

質問:

wsdl2javaをWSDLドキュメントで実行すると、次のような警告が表示されます。 「type <some type> not declared in namespace <some namespace>, using Object instead.」

回答:

これは、WSDLドキュメントが宣言されていないタイプを参照した場合に発生します。 例えば、これは、タイプがプリフィックスで修飾されていない場合と現在のxmlnsで宣言されていない場合に発生します。 その場合、ドキュメントにはxmlns: <some namespace>宣言を追加し、タイプには「xsd:string」のようなプリフィックスを追加する必要があります。

質問:

xsd2javaコンパイラでは何が実行されますか?

回答:

xsd2javaコンパイラは、XMLスキーマタイプをJavaBeansにコンパイルします。 例えば、XMLスキーマのcomplexTypeは、複雑なタイプの属性および要素がBeanプロパティであるJavaBeanにマップされます。 xsd2javaの詳細については、チュートリアルlを参照してください。

質問:

rmi2soapコンパイラでは何が実行されますか?

回答:

rmi2soapコンパイラは、Java RMIをSOAPスタブおよびスケルトンに変換します。 スタブを使用することによって、クライアントプログラムは基礎となるワイヤプロトコルに煩わされることなく簡単で安全な方法でWebサービスにアクセスすることができます。 同様に、スケルトンでも簡単で安全な方法でWebサービスにアクセスすることができます。 rmi2soapの詳細については、チュートリアルを参照してください。

質問:

rmi2wsdlコンパイラでは何が実行されますか?

回答:

rmi2wsdlコンパイラは、WSDLドキュメントをJava RMIに変換します。 Javaインタフェースはそのメソッド、パラメータ、戻り値および例外とともに、WSDLドキュメントにそれぞれ対応するportType、操作、入力、出力、およびフォルトメッセージとともに変換されます。 さらに、rmi2wsdlコンパイラはportTypeに対してSOAPバインドおよびサービスを生成します。 rmi2wsdlの詳細については、チュートリアルを参照してください。

質問:

rmi2wsdlを実行していますが、生成されたWSDLドキュメントにはSOAPバインドがないのですか?

回答:

それは、-soapフラグ付きで実行する必要があります。 コマンドラインパラメータの詳細についてはマンページを参照してください。

質問:

jwebservツールでは何が実行されますか?

回答:

jwebservツールは非常に軽量のWebサーバでHTTP 1.0を送信します。 これを使用することによって、開発者はNovell exteNd WSSDKサービスの実装を含む標準のWARファイルを展開することができます。 Novell exteNd WSSDKサーバでは、ブラウザインタフェースを使用して開発者はサービスを展開したり非展開することもできます。 jwebservの詳細については、チュートリアルを参照してください。

質問:

tcptunnelツールでは何が実行されますか?

回答:

tcptunnelツールはTCP接続をインターセプトしてクライアントおよびサーバ間で交換された内容を表示します。 これは、ローカルホストのポートおよびリモートホストのポート間でビジュアル"パイプ"として機能します。

質問:

java2rmiツールでは何が実行されますか?

回答:

java2rmiウィザードは、通常のJavaクラスをリモートインタフェース(RMI)に変換するグラフィカルツールです。 プルダウンリストからクラスを選択し、そのクラスからメソッドを選択して生成されたRMIで利用できるようにします。

質問:

クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" com.sssw.jbroker.web.ServiceException: bad content type = text/html」

回答:

次に示すことが原因になっている場合があります。
  • URLがWebサービスを指していない。 WebサービスのURLのコンテンツタイプは常にtext/xmlです。
  • Webサービスが指定されたURLで現在展開されていない。 これが原因の場合、Webサーバはhtmlドキュメントをエラーメッセージと一緒に返します。

質問:

クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" javax.naming.NamingException: unable to load <some class>」

回答:

これは、CLASSPATHに問題がある可能性が高いです。 エラーメッセージが発生したクラスがjvm (例えば、 'javap <some class>と入力)で利用できることを確認します。 <some class>が生成されたクラスを指していて、wsdl2javaまたはrmi2soapコンパイラを実行する前にクライアントを実行しようとすると、エラーが発生する場合もあります。

質問:

クライアントを実行すると、次のような例外が発生します。 「com.sssw.jbroker.web.ServiceException: unable to find "jBroker" transport handler for <some protocol>」

回答:

これは、Novell exteNd WSSDKにより認識されないプロトコルを使用すると、発生します。 現在のバージョンでは、Novell exteNd WSSDKは、http、httpsおよびjmsプロトコルのみを認識します。

質問:

クライアントを実行すると、次のような例外が発生します。 「Exception in thread "main" java.rmi.ConnectException: Connection refused」

回答:

使用しているHTTPポートが要求を受け入れていない可能性が高いです。 送信しようとするポートでHTTPサーバが実行されていることを確認します。 例えば、クライアントプログラムがhttp://localhost:8080のWebサービスを呼び出そうとしている場合、ローカルマシンのポート8080でHTTPサーバが実行されている必要があります。

質問:

クライアントを実行すると、次のようなランタイムの例外が発生します。 「Exception in thread "main" com.sssw.jbroker.web.mapping.MarshalerNotFoundException: no serializer found for <some class>」

回答:

クラスに対してマーシャラを登録する必要があります。 これには、一般的に次のコードを使用します。
 DefaultTypeMappingRegistry registry = new DefaultTypeMappingRegistry();
 mapper.importMappings("my.private.type.mappings");
 ((Stub)stub)._setTypeMappingRegistry(registry);
「スタブ」オブジェクトの場所はJNDIで参照したところにあります。

質問:

メモリを増設した状態では、Novell exteNd WebサービスSDKツールをどのように実行しますか?

回答:

-Jコマンドラインフラグを使用して、フラグをjvmに渡すことができます。 最大ヒープサイズを250 MBに設定するには、wsdl2javaコンパイラを次のように実行します。
   wsdl2java -J-Xmx250m myfile.wsdl

質問:

「jwebserv」を起動すると、次のようなエラーメッセージが表示されます。 「failed to start web services server: "java.net.BindException: Address already in use」

回答:

これは、別のプログラムがそのポートですでに実行されていることを意味しています。 現在実行しているプログラムを停止するか、Webサーバを異なるポートで開始する必要があります。

高度な問題

質問:

タイプマッピングは何ですか?

回答:

タイプマッピングでは、JavaオブジェクトおよびXML間でマップする方法を定義します。 マッピングには、Javaクラス、シリアライザおよびデシリアライザのクラス、XMLタイプの名前空間、XMLタイプのローカル名、そしてXMLタイプに対するXMLスキーマの場所が含まれています。

質問:

シリアライザは何ですか?

回答:

シリアライザは、出力ストリームにJavaオブジェクトの状態を書き込むことによってJavaオブジェクトをXMLに変換します。インタフェースを実装する必要があります。 シリアライザは、Serializerインタフェースを実装する必要があります。

質問:

デシリアライザは何ですか?

回答:

デシリアライザは、入力ストリームからJavaオブジェクトの状態を読み取ることによってJavaオブジェクトをXMLに変換します。 デシリアライザは、Deserializerインタフェースを実装する必要があります。

質問:

マーシャラは何ですか?

回答:

マーシャラはシリアライザおよびデシリアライザの基本のインタフェースです。 マーシャラは、Marshalerインタフェースを実装する必要があります。

質問:

なぜマーシャラが必要なのですか?

回答:

Novell exteNd WebサービスSDKでは、スキーマのコンパイルをサポートし、多数のXMLスキーマタイプに対して自動的にJavaタイプを生成しますが、xsd2javaコンパイラは、XMLスキーマ全体をサポートしていません。 スキーマコンパイラによってサポートされていないタイプ、あるいは特別なカスタムのシリアル化が必要な場合は、マーシャラを作成する必要があります。

質問:

BeanMarshalerおよびPublicFieldMarshalerでは何が実行されますか?

回答:

Novell exteNd WebサービスSDKでは、ほとんどの状況に使用できる2つの一般的な目的のマーシャラをサポートしています。 BeanMarshalerでは、マーシャルオブジェクトをJavaBeanとして処理し、JavaBeanプロパティに基いてXMLの読み取りと書き込みを行います。 PublicFieldMarshaler でも同じですが、JavaBeanプロパティよりは、パブリックフィールドを使用します。 また、ValueTypeMarshalerも使用できます。これはBeanプロパティおよびパブリックフィールドの両方をシリアル化します。

質問:

Novell exteNd WSSDKタイプマッピングをjava.util.Mapに置き換えることができますか?

回答:

いいえ、組み込みのタイプマッピングを置き換えることはできません。 ただし、独自のマップのサブクラスを作成し、そのタイプに対してマーシャラを登録することができます。

質問:

wsdl2javaは、In/Outパラメータをどのように処理しますか?

回答:

wsdl2javaコンパイラは、値をカプセル化するholdersを生成します。 In/Outパラメータについては、操作を呼び出す前に、ホルダの値を設定できます。 In/OutパラメータおよびOutパラメータについては、呼び出しが完了すると、サーバが設定した値を読み取ることができます。

質問:

wsdl2javaおよびrmi2wsdlコンパイラはオーバーロードしたメソッド名をサポートしますか?

回答:

はい、WSDLおよびRMIの両方は、オーバーロードしたメソッド名をサポートします。 WSDLでは、これをサポートするために操作定義の入力要素および出力要素を定義する必要があります。

質問:

なぜrmi2wsdlは、Javeタイプがorg.w3c.dom.Elementの場合に生成されたWSDLドキュメントで「use=literal」に設定されるのですか ?

回答:

それは、XMLスキーマに「要素」タイプがないからです。 さらに、Javaタイプが要素の場合、それをWSDLにマップする最も適切な方法は、メッセージをSOAPバインドにエンコードされるように設定することです。

質問:

メソッド署名で要素と通常のJavaタイプを併用できないのはなぜですか?

回答:

WSDLでは、Javaメソッドのパラメータは、メッセージのパーツに一致しています。 SOAPエンコーディングでは、メッセージ全体をリテラルまたはエンコードのいずれかに設定するので、リテラルメッセージとエンコードメッセージを併用したものに相当するWSDLはありません。

SOAP、WSDLおよびXML

質問:

JAX-RPCは何ですか?

回答:

JAX-RPCは、Java API for XML-Based RPCの略語で、Java APIでは、XMLメッセージを使用して通信するクライアント/サーバアプリケーションを作成します。 Novell exteNd WSSDKは、JAX-RPC標準を実装しています。

質問:

WS-Iは何ですか?

回答:

WS-I (Web Services Interoperability) Organizationは、プラットフォーム、オペレーティングシステム、およびプログラミング言語間の相互運用可能なWebサービスの促進するために設立された業界団体です。 Novell exteNd WSSDKでは、WS-I Basic Profile 1.0をサポートしています。

質問:

SOAPは何ですか?

回答:

SOAPとは、Simple Object Access Protocolで、サービスを呼び出すための一般的なプロトコルです。 SOAPはHTTPに連携していませんが、一般的にHTTP POST要求にパッケージ化されたSOAPメッセージを介してインターネット上で実行しているWebサービスへのアクセスに使用します。 SOAP 1.1仕様は、W3C Noteで、hereからダウンロードできます。

質問:

SOAPはCORBAと同じですか?

回答:

CORBAは、分散および異種オブジェクトシステムの完全なプログラミング環境です。オブジェクトシステムには、オブジェクトモデル、ワイヤプロトコル(IIOP)、クライアント/サーバプログラミング言語API、およびネーミング、セキュリティ、トランザクションなどの標準システムサービスが含まれます。 SOAPは、大まかにはCORBAのIIOPと同義になります。

質問:

SOAPメッセージはどのように表示されますか?

回答:

SOAPメッセージは、ルーツ要素がエンベロープのXMLドキュメントです。 エンベロープには、ヘッダと本文が含まれます。 クライアント/サーバコントラクトによっては、ヘッダにオプションで情報を含ませることができます。 本文には、たとえば、RPCまたは戻り値を呼び出すためのパラメータなど、SOAP要求または応答が含まれています。

質問:

SOAPはほかのプログラミング言語またはプラットフォームに連携していますか?

回答:

いいえ、SOAPは単なるワイヤプロトコルで、HTTPをサポートするプログラミング言語やプラットフォームであれば、SOAPをサポートすることができます。 HTTPを基礎となるトランスポートとして使用し、XMLをデータの説明に使用することによって、SOAPはWeb上で実行されている異種アプリケーションを統合しようとするかなり偏在的なプロトコルです。

質問:

SOAPはセキュリティモデルを定義していますか?

回答:

いいえ、現在のSOAPのバージョンはセキュリティの面ではHTTPに依存しています。 SOAPメッセージは、HTTP要求のペイロードのXMLメッセージとともにHTTP POSTのメッセージとして交換されます。 SOAPはまた、HTTPSを経由することもできるので、SOAPメッセージのハンドラ(Webサービス)は、基本認証を提供できます。 標準化されていませんが、SOAPメッセージのヘッダにセキュリティ属性を含ませることもできます。

質問:

WSDLは何ですか?

回答:

WSDLは、Webサービス記述言語(Web Service Description Language)という意味で、一連のport typeのサービスを説明するためのXML形式です。各port typeには、入力、出力、およびフォルトメッセージの操作のセットが含まれています。 WSDLではまた、SOAP、MIME、HTTPなどの一般的なインターネットプロトコルへのバインド定義もサポートしています。 WSDL 1.1仕様は、W3C Noteで、hereからダウンロードできます。

質問:

XMLPは何ですか?

回答:

XMLP (XML Protocol)は、W3Cアクティビティで、分散システムのXMLベースのプロトコルを定義します。 XMLPは最近、SOAP 1.2に名前を変更しました。 詳細については、ここを参照してください。

質問:

SOAP、WSDLおよびXMLについて利用できるほかのFAQはありますか?

回答:

はい。次のいずれかを参照できます。

Copyright © 1998-2003, Novell, Inc.All rights reserved.