2009-06-08 12 views
0

Oracleデータベースと対話するC言語で書かれたアプリケーションがあります。このアプリケーションは実行可能ファイルであり、UNIXプラットフォーム上で動作します。私たちは他の人が消費するためにこのアプリケーションをWebサービスとしてhttpを介して公開する必要があります。WebサービスとしてCアプリケーションを有効にします

WebサービスにJNIとCXFを使用し、tomcatでアプリケーションを実行することを考えました。

これは適切な解決策ですか、それとも他の可能性がありますか?

C言語をサポートしているAxis2がWebサービスを作成しています。私はC言語の経験がありません。 CのAxis2は良いですか?アプリケーションをデプロイするために使用できるhttpサーバーこの場合、Apache webserver sifficeですか?

編集:コマンドラインは、そのexeについて言及したようにオプションではありませんが、公開する必要のある部分には、入力として複雑なデータ構造が必要なため、コマンドラインは使用できません。

答えて

1

いくつかの要因によって異なります。 Vinkoの方法では、アプリケーションにはきれいなコマンドラインインターフェイスが必要です。さらに、すべてのWebサービス要求に対して新しいプロセスを作成すると、処理できる要求の数が制限されます。これは、オーディエンスがどれくらいの大きさになるかによっては大丈夫かもしれません。

偉大なコマンドラインインターフェイスがなく、提供できるリクエスト数を最大限に増やしたい場合は、2つの主要な選択肢があります。 WebサービスをJavaで記述し、JNIまたはJNAでCに呼び出します。または、純粋なCまたはC++で記述します。責任がある開発者がCを知らない場合、おそらく最後のものはお勧めできません。

編集:コマンドラインはオプションではないので、私はJNIまたはJNAでJavaをお勧めします。

+0

Cが問題になることはありません。私はそれを管理することができます。私は最良の解決策だけが必要ですか? –

1

Apache FoundationパッケージAxis2/Cの使用を検討してください。これは非常に堅実なインターフェースですが、移植性はやや制限されています(Linux上では動作しますが、Solarisでは動作しません - いくつかの調整が必要です)。

しかし、あなたはCでの経験がないと言っているので、それはあなたにはあまりにも難しいかもしれません。一方、Webサービスに変換しようとしているコードがC言語(おそらくOracle OCI)にあるとします。つまり、C言語を学ぶのを避けるのは難しいです。

0

2年以上のサーバー側でのAxis2/Cを使用した後、私は強く次のような理由から任意のサーバー側のコードのためのAxis2/Cを使用することはお勧めできませ:

  1. それがいっぱいですメモリリーク。つまり、WSDLのリーク、単純なHTTPサーバーのリーク、CGIモジュールのリーク(基本的なCGIとして使用すると問題はありませんが、FastCGIなどから使用したり、コードを再利用した場合の大きな問題) 。 Axis2/CのHTTPサーバコードの唯一の部分は、Apache2のmod_axis2モジュールです。多分それは良いです。

  2. Axis2/Cには、簡単なHTTPサーバーのリークがあり、HTTPキープアライブはサポートされていません(リクエストごとに接続が閉じられます) 。 boost :: asio HTTPサーバーの例とAxis2/C CGIモジュールに基づいて自分自身でサーバーを実装する必要がありました。実装に1日を費やし、すべてのメモリリークを削除するために4日を費やしました。この割合は、Axis2/Cに関連するすべての作業に標準的なようです。 valgrindで日夜を過ごし、メモリリークやダブルフリーのデバッグをしたいですか?

  3. 最も重要なことは、プロジェクトは積極的に維持されていないことです.JIRAにはパッチに関する問題がたくさんありますが、パッチを確認して適用するには数カ月から数年かかることがあります。私は、深刻なプロジェクトがサーバー側でそれを使用しているかどうかは疑いがあります。私の長期的な計画はGITにクローンして、githubでパッチを適用したバージョンを維持することです(Axis2/Cですでに実装されているコードを何年もサポートしなければなりません)。

P.S.私の次のWebサービス関連のサブプロジェクトでは、JNIを使​​用してJetty + CXFを埋め込みます。

+0

Axis2/C-1.7.0(トランク)には多くの新機能があり、完全に不安定です。 1.6.0を使用します。より安定していますが、多くのバグもあります。現在のトランクからバックポートされたいくつかのパッチを含むgooglecode(https://code.google.com/p/axis2c-unofficial/)プロジェクトを作成しました。安定性を向上させ、そのプロジェクトに貢献する準備ができているパッチがあれば、私に( [at] gmail.com)を書いてください。 – loentar

関連する問題