プロジェクトの1つでC++に基づくWebサービスを作成するためにWSO2フレームワークを使用しています。フレームワークをインストールし、axisサーバーを実行して、サンプルクライアントプログラムでテストすることができます。
自分でクライアントを作成しようとすると、コードは問題や警告なしにコンパイルされます。ただし、適切なメッセージが表示されない場合、実行時にアプリケーションがクラッシュします。コンソールのstd::countをいくつか入れてみたところ、Environment::initializeメソッドの呼び出し中にクラッシュが発生していることがわかりました。クライアントコードについては、以下を参照してください。これらの数行はクライアントアプリケーション全体を構成するため、コードが省略されることはありません。
int main(int argc, char *argv[]){
ServiceClient * sc;
Environment::initialize("hello.log", AXIS2_LOG_LEVEL_TRACE);
string end_point = "http://localhost:9090/axis2/services/hello";
sc = new ServiceClient(end_point);
OMElement * payload = new OMElement("greet");
payload->setText("Hello Service!");
try
{
OMElement* response = sc->request(payload, "");
if (response)
{
cout << endl << "Response: " << response << endl;
}
}
catch (AxisFault & e)
{
if (sc->getLastSOAPFault())
{
cout << endl << "Fault: " << sc->getLastSOAPFault() << endl;
}
else
{
cout << endl << "Error: " << e << endl;
}
}
delete payload;
}
IDEとコンパイラにVisualStudio2010を使用しています。すべてのヘッダーと必要なライブラリのパスを含めました[axutil.lib;axiom.lib;axis2_parser.lib;axis2_engine.lib;wso2_wsf.lib;]。
コードのコンパイルは、デバッグモードとリリースモードの両方で問題はありません。実行時にアプリがクラッシュします。
どんな助けでも大歓迎です。
よろしくお願いします、プラディープ。