質問

Apache Axis を使用して Java アプリを Web サーバーに接続しています。wsdl2java を使用してスタブを作成しましたが、スタブを使用しようとすると、次の例外が発生します。

org.apache.axis.ConfigurationException:サービス名がありません <web service name> 利用可能です

何か案が?

役に立ちましたか?

解決

単なる推測ですが、そのエラー メッセージはサービス名を空白のままにしたことを報告しているようです。このエラー メッセージを生成するコードは次のようになると思います。

throw new ConfigurationException("No service named" + serviceName + " is available");

他のヒント

による ドキュメンテーション @arnonym によってリンクされていますが、この例外はやや誤解を招きます。サービスを見つけようとする最初の試行では、ConfigurationException がスローされ、キャッチされます。これは、ConfigurationException クラスによって DEBUG レベルでログに記録されます。次に、別の方法を使用して、成功する可能性のあるサービスを見つける別の試行が行われます。この問題を回避するには、log4j.properties で ConfigurationException クラスのログ レベルを INFO に変更するだけです。

log4j.logger.org.apache.axis.ConfigurationException = INFO

これは、Axis の制御フローで使用される例外です。

http://wiki.apache.org/ws/FrontPage/Axis/DealingWithCommonExceptions--> org.apache.axis.ConfigurationException:XXX という名前のサービスは利用できません

私のコードは次のようになります。うまくいくようです。サービス ロケーターを使用していますか? それとも単にサービスを作成しているだけですか?

SomeServiceLocator locator = new SomeServiceLocator();
SomeService service = null;
try
{
    service = locator.getSomeServiceImplPort();
}
catch (ServiceException e)
{
    e.printStackTrace();
}

使用している Axis のバージョンはわかりませんが、サーバーとクライアントの両方に Axis2 を使用しており、Java2WSDL はローカルホスト上にサービスのデフォルトのエンドポイントを作成します。WSDL2Java を使用してクライアント スタブを作成すると、スタブのデフォルトのコンストラクターは localhost を指すようになります。サービスが他のエンドポイントにある場合は、エンドポイントをパラメータとしてコンストラクターを使用する必要があります...たぶん問題はまったくそうではありませんが、他の回答で述べたように、WSDL2Java入力として使用しているWSDLがなければ、それを言うのは困難です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top