4

既存のデータベース(私の場合はPostgreSQL)があり、SOAP Webサービスを介してそのデータ(作成、読み取り、更新、削除、クエリ)にアクセスしたいと考えています。現在行っていることは、各エンティティのJPA実装と、汎用CRUDインターフェースの実装です。次に、これらのBeanをJaxWSWebサービスとして公開します。この設定の問題は、JaxWSが汎用インターフェースで奇妙に動作することです。

これは、WSを介してDBにアクセスするという一般的な問題であるため、すべてのエンティティテーブルをWebサービスとして公開するオープンソースソリューションがあるかどうかを知りたいと思います。このようなツールは、入力として一連のJPAクラス(またはその他のデータ記述)、またはJDBC接続(SQLスキーマを引き出すため)を必要とし、一連のCRUDWebサービスを生成します。

理想的には、このようなツールは主にサーブレットで構成され、任意のWebアプリケーションに組み込むことができます。

そのようなツールについてのあなたの提案を教えてください、そしてあなたがそれを使った経験があれば、共有してください。

アドバイスありがとうございます

4

2 に答える 2

3

質問に答えず、代わりに「あなたはそれをしたくない」と言って謝罪しますが...

まず、あなたはそれをする必要がないかもしれません。データベースはすでにWebサービスを直接公開していますか?たとえば、DB2UDBとそのツールが自動的に機能します。Javaを作成する必要はまったくありません。

第二に、多分あなたはとにかくそれをするべきではありませんか?エンティティ層をWebサービスとして直接公開することは、ほとんどアーキテクチャ上のアンチパターンです。粒度が高いと、サービスが非効率になり、長期的に維持するのが難しくなります。大規模なWebサービスは、非常に粗雑なビジネスに意味のあるサービスとして優れている傾向があります。たとえば、保険証券を作成するには、いくつかの更新といくつかの異なるテーブルへの挿入が必要になる場合があります。生のテーブルアクセス機能をWebサービスとして公開するということは、すべてのクライアントが何をすべきかを正確に知る必要があることを意味します。代わりに、WebサービスCreatePolicy()を公開し、実装に厄介なものを所有させます。

于 2009-09-04T16:46:39.460 に答える
2

この例では、多層アーキテクチャがあり、その一部はストレージです。トランザクションを失いたくないのですが、Webサービスを介して新しい顧客を挿入する必要があり、スキーマ定義と一緒に顧客サービスがある場合は、自動生成できます。また、私の知る限り、BPEL 2.0はトランザクションをサポートしているため、これらのデータサービスはトランザクションを認識できます。つまり、分散トランザクションに参加できます。

新しいBLOGエントリの作成は、専用のトランザクションで実行できる操作です。私たちのプロジェクトには他にも多くのケースがあり(ほとんどすべてのテーブル)、それらを外部システムに公開する必要があります。なぜこれを手で100回書くのか。ANTLRの作者が言うように、5日で手動で何かを行うことができるなら、それを自動化するために5年を費やしてみませんか。

私は5年間を費やして、すぐに使える解決策を探したくありません。現在、コード生成を含むタスクを半自動化していますが、最大の問題は、JaxWSが汎用インターフェースでうまく機能しないことでした。

このアーキテクチャには、次のような多くの優れた機能を実行できるという利点があります。-エンティティクラスの上に一連のアノテーションを設定して、ROLE権限を確認します。このチェックは、エンティティ、Webサービス、または直接Java呼び出しにどのようにアクセスするかに関係なく行われます。また、特定のテーブルに対するすべての操作のRSS / Atomフィードを生成するなど、フックを一度定義することもできます。-自動フォーム作成のために、XSDで記述されたエンティティタイプをサポートする多くのGUIツールがあります。すべてのフォームを生成したくはありませんが、少なくともデフォルトの実装があり、これを置き換えることができます。

私が探しているのは、実際にはデータアクセス抽象化プロトコルです。これはデータベースなどによってバックエンドされ、Webサービス(soap / restful / json)としてエクスポートされます。

このApacheインキュベーションプロジェクトであるEmpireDBがあります。それらの優れた点は、アノテーションを使用せずjavaclasses、モデルを定義することです。これにより、メタデータを使用してXSDとフォームを簡単に作成できます。業界標準ではないプロジェクトを使用することはできません。そのため、JPA(Hibernateなど)やJaxWSなどの標準テクノロジーに基づいたすぐに使えるソリューションを探しています。

于 2009-09-04T17:38:50.167 に答える