0

JAX-RPC は初めてです。RAD 7.0 で簡単な Java Bean を作成してみました。また、JAX-RPC Web サービスを作成するためのオプションを調べました。私の方法は以下の通りです。

 public byte[] getData(byte[] argument) {

    <Customclass> proxy = new <Customclass>();
    List outputList = new ArrayList();
    try {
        // Call a method on proxy
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    byte[] output = getBytesFromObject(outputList);
    return output;

}

1)依存クラスをインポートしない場合、これはクライアントから呼び出されたときに正常に機能します。2) ただし、依存クラス (上記の Customclass) をインポートすると、以下の例外が表示されます。

 [9/12/09 9:59:00:182 IST] 00000026 UserException E   WSWS3228E: Error: Exception: WebServicesFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
 faultString: java.lang.NoClassDefFoundError: <Customclass>
 faultActor: null
 faultDetail: 
java.lang.NoClassDefFoundError: 

パッケージ化 - 上記のメソッドは、ear 内に jar ファイルとして含まれるすべての必要なクラスを持つアプリケーション (ear) に存在します。上記のメソッドは、クライアント (JAX-RPC クライアント) から呼び出されます。

誰かがこれについて私を導くことができれば幸いです。

4

2 に答える 2

0

XStream に出会いました。これにより、既存のオブジェクトをそのまま使用し、それらを xml 文字列としてサーバーに渡し、サーバー側で xml 文字列からオブジェクトを再作成することができました。

これは、Map、List オブジェクトをクライアントからサーバーに渡す 1 つの方法だと思います。

サーバーモジュールをリモートボックスに移動する予定です。

于 2009-09-16T07:57:17.000 に答える
0

jar は /lib フォルダーにありますか、それともデプロイメント記述子で指定されたフォルダーにありますか? 以下は、JSR-000244 JavaTM Platform, Enterprise Edition 5 Specificationセクション 8.2.1 からのものです。

EE.8.2.1

バンドルされたライブラリ アプリケーションにバンドルされているライブラリは、次の方法で参照できます。

  1. JAR 形式のファイル (.jar ファイル、.war ファイル、または .rar ファイルなど) は、参照元の JAR ファイルのマニフェストの Class-Path ヘッダーで参照先の .jar ファイルまたはディレクトリを指定することにより、.jar ファイルまたはディレクトリを参照できます。ファイル。参照される .jar ファイルまたはディレクトリは、参照する JAR ファイルの URL に関連する URL を使用して名前が付けられます。マニフェスト ファイルは、JAR ファイルでは META-INF/MANIFEST.MF という名前です。マニフェスト ファイルの Class-Path エントリの形式は Class-Path: list-of-jar-files-or-directories-separated-by-spaces です。

  2. .ear ファイルには、JAR ファイルにパッケージ化されたライブラリを含むディレクトリが含まれる場合があります。.ear ファイルのデプロイメント記述子の library-directory エレメントには、このディレクトリーの名前が含まれています。library-directory 要素が指定されていない場合、または .ear ファイルにデプロイメント記述子が含まれていない場合は、lib という名前のディレクトリが使用されます。空の library-directory 要素を使用して、ライブラリ ディレクトリがないことを指定できます。このディレクトリ (サブディレクトリではない) 内の .jar 拡張子を持つすべてのファイルは、アプリケーション クライアントを含む、EAR ファイルにパッケージ化されたすべてのコンポーネントで使用できるようにする必要があります。これらのライブラリは、アプリケーションにバンドルされているか、個別にインストールされている他のライブラリを、ここで説明する手法を使用して参照できます。

  3. Web アプリケーションには、WEB-INF/lib ディレクトリにライブラリが含まれている場合があります。詳細については、サーブレットの仕様を参照してください。これらのライブラリは、アプリケーションにバンドルされているか、個別にインストールされている他のライブラリを、ここで説明する手法を使用して参照できます。

また、CustomClass 変数宣言を try/catch 内に配置して、例外に関する詳細情報が得られるかどうかを確認してください。

于 2009-09-12T13:14:04.690 に答える