0

初めての AXIS SOAP クライアントを動作させるのに本当に苦労しています。Axis v1.4 を使用しています。

WSDL には次のものが含まれます。

....
<element name="GetParameters">
  <complexType>
    <sequence>
      <element name="param1" type="codeapi:SomeParam"/>
      <element name="param2" type="unsignedShort" minOccurs="0"/>
      <element name="param3" type="string" minOccurs="0"/>
      <element name="param4" type="unsignedShort" minOccurs="0"/>
      <element name="param5" type="unsignedShort" minOccurs="0"/>
      <element name="param6" type="string" minOccurs="0"/>
      <element name="param7" type="string" minOccurs="0"/>
      <element name="param8" type="string" minOccurs="0"/>
      <element name="param9" type="codeapi:AnotherParam" minOccurs="0"/>
    </sequence>
  </complexType>
</element>
....

wsdl2java を実行してコードを生成しました。

--

ポートを初期化しています:

SimpleProvider conf = new SimpleProvider(new BasicClientConfig());
conf.setGlobalRequest(new LoggingHandler(LOG, Level.FINE,
    "Request sent:\n"));
conf.setGlobalResponse(new LoggingHandler(LOG, Level.FINE,
    "Response received:\n"));

MyService = new MyServiceLocator(conf);

URL myServiceURL = "http://<removed>";

MyServicePort myServicePort = myService.getMyServiceSOAPPort(myServiceUrl);

--

リクエストにアクセスする私の最初の試み:

SomeParam param1 = new SomeParam();
param1.setParamA("blah"); // this is the only needed parameter

Entry[] allEntries = myServicePort.getParameters(param1, null, null, null, null, null, null, null, null);

これにより、null パラメーターはすべてオプションですが、(クライアント側で) NullPointerException が発生します。

--

私の2回目の試み:

SomeParam param1 = new SomeParam();
param1.setParamA("blah");

Entry[] allEntries = myServicePort.listCodes(param1, new UnsignedShort(), new StringHolder(), new UnsignedShort(), new UnsignedShort(), new String(), new String(), new String(), new AnotherParam());

これにより例外は発生しませんが、allEntries に null 値が返され、SOAP リクエストが実際に送信されたかどうかはわかりません (ほとんどの場合送信されていません)。

コードは Oracle AS 上で実行されます。いずれの場合も、Oracle でさまざまなデバッグ クラスがすべてアクティブ化され、LoggingHandlers が初期化されていても、Axis によって 1 行のデバッグ情報もログに書き込まれません。

ここで何が間違っていますか?

4

1 に答える 1

1

パラメーターがホルダー タイプ (つまり、そのクラスが *Holder) の場合は、パラメーターがオプションであっても、ホルダー インスタンスを作成してパラメーター値として指定する必要があるようです。そうしないと、生成されたスタブ クラスで null ポインター例外が発生します。ホルダーの中に何も入れないでください。

于 2009-05-28T10:09:13.617 に答える