問題タブ [gsoap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - C++でのGsoapエラー
私はgsoapを使用してC++でsoapサーバーを作成しています。メッセージは、Javaで記述されたバスを介してルーティングされます。サーバーとバスの両方がマルチスレッド化されています。システムを介して一度に1つのメッセージを送信すると、すべてがうまく機能します。3つのクライアントを起動して、それぞれができるだけ速くメッセージを送信すると、約3500のメッセージですべてが正常になります。その後、定期的に「一度に1つのソケット接続のみが許可されます」という受信を開始します。gsoapコードからのエラー。通常、4000通のメッセージのうち約3950通がOKです。過去500回の送信で50回すべての障害が発生しました。
送信の開始時にではなく、多くの送信後にこれらのエラーが発生するのはなぜですか?送信率は上がりません。
それは何について話しているのですか?エラーの説明が見つからず、その意味がわかりません。
gsoapアプリのマルチスレッド化に成功した人はいますか?
これが私のサーバーコードです。
c++ - gSOAP での名前空間のオーバーライド
私は Web サービス ツールキットとして使用しており、複数の から一度gSOAP
にスタブ クラスとプロキシ クラスを生成しました。したがって、すべての名前空間バインディングは 1 つのファイルにあります。 soapcpp2
WSDL
.nsmap
問題は、私が行ったすべてのメソッド呼び出しですべての名前空間バインディングが送信されていることです。パケットはHTTP POST
異常に大きくて醜いです。
名前空間バインディングをプログラムでオーバーライドする方法はありますか?
soap - WSDL のベスト プラクティス
サードパーティと統合する SOAP アプリケーションを開発しています。このサードパーティの WSDL は非常に奇妙だと思います。私は SOAP にかなり慣れていないので、壊れていなければ修正を依頼したくありません。技術的には有効なドキュメントであると確信していますが、これについて間違っていると私が気づいたことがいくつかあります (したがって、タイトルに「ベスト プラクティス」と書いたのはそのためです)。また、私は SOAP ライブラリとして gSOAP を使用しています。これが、これらのいくつかが奇妙だと思う理由かもしれません (一般的な SOAP よりも gSOAP の方が新しいのです)。
同じ WSDL に SOAP 1.1 と SOAP 1.2 の両方に指定されたインターフェースがあります。1.2 しか使用しないため、これにより gSOAP は必要なクラスの 2 倍を生成します。
名前空間はすべて
http://tempuri.org
. そんなはずないですよね?多数の RPC 呼び出しを定義しているにもかかわらず、彼らの WSDL はドキュメント形式を使用しています。gSOAP ではドキュメント形式に C++ の型付きパラメータを取るメソッドが生成されないようなので、RPC 形式に切り替えてもらいたいと考えています。代わりに、すべての API 関数の入力および応答データに対して新しいクラスを作成します。修正できない場合は、gSOAP をラップする別のレイヤーを作成して、アプリの残りの部分に適切な API を提供する必要があります。また、AFAICT、行き来する XML は RPC に切り替えれば今とまったく同じになるので、難しいことはないと思います。
要素には minOccurs = 0 がありますが、要素なしでリクエストを送信すると、要素が必要であることを示すエラーが返されます (場合によっては、null ポインター例外のスタック トレースさえあります)。必要な場合は、minOccurs = 1 と指定する必要がありますよね?
ほとんどすべての Web サービス関数は、成功を示す整数 (実際にはブール値) とエラー メッセージ文字列を含む応答を指定します。これには SOAP フォールトを使用する必要がありますか? gSOAP を使用すると、それを非常に簡単に把握できる (そして、エラー メッセージを簡単に出力できる) ため、障害が発生した場合、アプリケーションが処理しやすくなると思います。
もちろん、私が依頼したからといって、このサードパーティ企業が WSDL を変更することを期待しているわけではありません。少なくとも私は何かを学ぶだろう... 私が知っている限りでは、これらのどれも間違っていないし、疑わしいことさえない. ご協力いただきありがとうございます。
open-source - 商用製品で gSOAP を使用するには、どのようなライセンスが必要ですか?
商業的に配布される製品で gSOAP を使用したいと考えています。私が念頭に置いている用途は、wsdl2h を使用してヘッダーを生成し、soapcpp2 でヘッダーを使用してから、コード内のスタブで生成された関数を呼び出す、かなり典型的なワークフローであると思われるものです。
これを行うには、どのライセンスを使用する必要があるか 100% 確信が持てません。ここで誰かがすでにこれを経験し、解決策を見つけましたか?
session - セッションがライブか期限切れかを検出する方法は?
私のセッションが gsoap クライアントでまだ生きているかどうかを判断するために行うことができる呼び出しはありますか?
セッションがまだ生きているかどうかを確認する唯一の方法は、各 SOAP 呼び出しの後にすべての Cookie 値が一致するかどうかを確認することです。tcp_keep_alive フラグが設定されているため、gsoap はセッションが有効であることを認識しているようです。ソープ呼び出しの前にこれをチェックできる gsoap の機能はありますか? セッションが失われたことを知らせるコールバックはありますか? それとも、この目的のためにダミーの石鹸メソッドを作成する必要がありますか?
c++ - C++ と SOAP -> うまく始めるには
私のプロジェクトは SOAP を導入しようとしています。C++ <-> Java および C++ <-> Flex 通信に使用される予定です。私は、Java ビジネス ルール エンジンと新しい Flex GUI を活用するためにアプリをリファクタリングする責任があります。
C++ SOAP について読む必要があるリソースは何ですか? W3 の資料を読みました。おそらく、Solaris ボックスで gSOAP を使用しています。
c++ - C++ - gsoap: パラメータ受け渡しメモリ管理の問題
そのための Web サーバーとクライアントのテスト スタブを作成しています。パラメータのメモリ管理について質問があります。
クライアントから、soap 関数 ns1_func1(input * pInput, output* pOutput) を呼び出しています。これで、入力クラスと出力クラスの両方に、他の構造体へのポインターが含まれるようになりました。
例えば
クラス出力 { class abc * p1; クラス定義 * p2; };
私の質問は、メモリ割り当ての責任者は誰ですか? クライアントは入力メモリ割り当てを担当し、サーバーは出力メモリ管理を担当しますか?
現在、私のクライアントコードは次のようになっています
soap_new_Output(soap, -1) を使用してサーバーから pOutput を割り当てているにもかかわらず、ns1_func1 を呼び出した後、常に pOutput を NULL として取得しています。
また、soap_destroy を呼び出すと自動的に割り当て解除されるメモリを割り当てるには、soap_new_X を使用する必要があると理解しています。間違っている場合は修正してください。
基本的に、そのような場合に誰がメモリの割り当て/割り当て解除を行うべきかについての知識がなくてもがき苦しんでいます。
どんな助けでも素晴らしいでしょう。
linux - 組み込みデバイスに Web サービスを実装する方法は?
エンタープライズ ソフトウェア システムと対話する必要がある組み込みデバイスがあります。
エンタープライズ システムは現在、コンポーネント間の通信にさまざまなメカニズムを使用しています。ODBC、RPC、TCP/IP 上の独自のプロトコルであり、.Net で実装された Web サービスに移行しています。
組み込みデバイスは *nix のフレーバーを実行するため、最適な対話メカニズムを検討しています。
通信の要件は次のとおりです。
SO-land で他に提案がある人はいますか?
編集:スティーブンの答えは、私に最も新しい指針を与えてくれました。ありがとうございます!
c# - Web サービスの速度低下
Web サービスの速度が低下しています。私の (Web) サービスは gsoap とマネージド C++ です。IIS/apache でホストされているわけではありませんが、xml を話します。私のクライアントは .NET です サービスの計算時間は短いです (応答を準備するのに 0.1 秒未満)。サービスがスムーズで高速で、可用性が高いことを期待しています。約 100 のクライアントがあり、応答時間は 1 秒です。クライアントには、1 分あたり約 1 つのリクエストがあります。クライアントは、tcp オープン ポート テストによって Web サービスの存在をチェックしています。したがって、輻輳の可能性を回避するために、gSoap KeepAlive を false に変更しました。そこまではすべて正常に実行されます: TCPView (sysinternals) で接続がほとんど表示されません
新しい特別な同期プログラムは、サービスをループで呼び出すようになりました。負荷は高くなりますが、すべてが 30 秒未満で処理されます。sysinternals TCPView では、約 1,000 の接続が TIME_WAIT にあることがわかります。彼らはサービスを遅くし、サービスが応答するのに数秒かかります.
SoapHttpClientProtocol 接続をリセットする必要があるのでしょうか? 誰かがループ内の Web サービス呼び出しで TIME_WAIT ゴーストを持っていますか?