2011-07-27 10 views
1

私はJavaでいくつかの情報を収集するためにオンラインデータベースに接続する必要のあるソフトウェアを書いています!このソフトウェアを私の会社で販売したいのですが、問題はOracleがGPLの下でJDBCドライバのライセンスを取得していることです。これは正しいですが、他の制限のなかでドライバを再配布することはできません。GPLを使わずにJavaでMySQLに接続

私が見ることができる唯一の選択肢は、ドライバが私の知る限り承知のようにBSDの下でライセンスされたとして、あなたは基本的にすべてのあなたがそれを好きで何ができることを意味し、PostgreSQLのを使用することです。しかし、私はWebホストJustHostと話しました。彼らは基本的にPostgreSQLをサポートしておらず、計画も立てていないと言っていましたので、PostgreSQLデータベースをホストしたいのであれば、私は追加することがあります。彼らはまったく正直で、PostgreSQLをサポートしている別のWebホスティング会社に転送する方が安価だと言っていました!

最後の手段として、私は情報を転送するために、単純なテキストファイルを使用することができます。しかし私の唯一の心配はセキュリティです。データベースに格納されている情報の一部は機密情報ですが、実際には、機密情報であるデータはライセンスキーとなり、電子メールになります。これは、最初の使用時にユーザーのライセンスキーを検証したときに明らかです。おそらくそれほど安全ではないかもしれませんが、私はちょうど人々が必要に応じてファイルを編集するのは非常に簡単だと思っていました。

私は、ある種のPHPスクリプトが、 Javaはより安全ですが、私はセキュリティ専門家ではありませんので、特に私が共有ホストを使用していて、「https」を支払っていないかのように見ています。

だから、基本的に、私はあなたが私の状況をください与えられたんだろうか知っていただきたいと思います。前にこのジレンマを経験しましたか?もしそうなら、あなたは何をしていますか?何をお勧めしますか?など

+0

[http://programmers.stackexchange.com](http://programmers.stackexchange.com/faq)から素早く良い回答が得られるかもしれません。 –

+0

@Andy - このスレッド、特にBill Karwinの投稿を読んでください:http://stackoverflow.com/questions/2111047/does-the-gpl-state-that-dependencies-of-gpld-software-also-have-to -be-released-u – Perception

+0

@Asadありがとうございます - 私はstackexchangeのさまざまな「枝」について忘れています。次回は覚えています! – Andy

答えて

2

データを転送するウェブサービスを提供する小さなサーバーアプリはどうですか?その後、そのサーバーアプリケーションだけが実際にJDBCドライバーを必要とします。

編集: ウェブサービスについては、JAX-WSをご覧ください(ここにはjava.net reference implementationがあります)。あなたは、Javaの組み込みの暗号化ライブラリを使用してデータを暗号化する暗号化された日付を転送し、クライアント上で解読可能性がウェブsericesを使用して

。さらに、データが変更されていないことを確認するために、データのハッシュ(たとえばMD5)を転送することがあります。

+0

あなたの提案をいただきありがとうございます。私は実際にGPLライセンスを十分に把握していないと考えて、これまでのところ最も賢明でした。私はここにいるメンバーの誰もが、弁護士/弁護士がいなくても、このようなことはあまりにも危険であると疑うことはありません!あなたの提案に精通してください!私は、PHPスクリプトのアイデアに似ていますが、Javaで書かれているものを理解していると思います。しかし、私は前にそれのような何かをしたことがないので、私はいくつかの情報をお願いします!私は共有ホスト上でそれを行うことができますか?そして、それは十分に安全なw/o 'HTTPS'など – Andy

+0

できればHTTPSで行く。あまりにも少ないものは、それがハッキングされるまで「安全」なので、遅すぎる:-) – Brian

+0

@Andy私たちは独自のサーバーを持っているので、共有ホストで動作するかどうかはわかりませんが、ホストはJavaといくつかの種類のアプリケーションサーバーをサポートしています(これはいくつかのことを簡単にします)。私は答えによっていくつかのヒントを追加しました。暗号化に関して:アルゴリズムは言語に依存してはならないので、PHPで行うこともできます。 – Thomas

3

あなたのソフトウェアを販売し、単にインストール要件としてデータベース/ドライバを一覧表示することができます。

これはドキュメントとジョブの完了に含めます。

GPLは、プロプライエタリなソフトウェアがそれに話すことができないという意味ではありません。これは前提条件であり、ソフトウェアの一部ではありません。

はまた、あなたもあなたのライブラリをインストールするサービスを提供するために、あなたの顧客を充電することができます注意してください

MySQL licensing and GPL


更新:

はまた、この類似した質問を参照してください。これにより、お客様は、お客様自身でインストールすることなく、請求書の一部を作成することができます。

+0

@Mikavei私は、ユーザーが自分でドライバをインストールさせる必要はありません。私は本当にこのような技術的なものはもちろんのこと、インストール要件はまったく必要ありませんでした!私は、MySQLが誰かに、ドライバをダウンロードするためのリンクを提供することさえ、再配布としてカウントされ、許可されていないと言いました!返信いただきありがとうございますが、バックアップ計画になると思います! – Andy

+0

GPLを読むと、サーバ/プライベートライブラリ用のget out節があります。 @Perceptionは彼のコメントを通して言及しています。 – Mikaveli

+0

"あなたの顧客にリンクを張る"というのはちょうど完全なごみです。 GPLソフトウェアを提供する際には、妥当な金額(郵便料金など)を請求することさえできます。 http://www.gnu.org/licenses/gpl-faq.html#DoesGPLAllowDownloadFee – Mikaveli

2

GPLのどのビットが逐語的配布を妨げていると思いますか。それを簡単に読み取りから私は見ることができます:

  1. あなたがプログラム(またはそれに基づいて作業、第2節の下 )をコピーして配布することができ、オブジェクトコードまたは実行可能形式で の条件の下でセクション1と2は、上記のあなたも、次のいずれかを実行することを提供する:

    A)に上記2のセクション1 の条件の下で配布されなければならず、対応した完全かつ機械で読み取り可能な ソースコード、を添付する。ソフトウェアインターチェンジに慣習的に使用される媒体。または、

    B) 物理的にパフォーマンスソース配布のあなたの費用、完全な機械可読 超えない料金で、第三者を与えるために、少なくとも3 年間有効書面による申し出、とそれを添付する。 ソフトウェアインターチェンジで通常使用されている媒体で、上記第1項と第2項の の条項の下で配布される、対応するソースコードのコピー。または

    c)対応するソースコードを配布するには、 オファーに関する情報を同封してください。 (この代替のみ非商用配布用 許可され、あなたが上記サブセクションBと 従う、そのようなオファーとオブジェクトコードまたは実行可能形式で プログラムを受信して​​いる場合のみ。)

http://www.gnu.org/licenses/gpl-2.0.html

+0

申し訳ありませんが、このようなことに関しては完全な初心者です私はこれが私の場合をどのように支えているのか本当に分かりません。私にはまだ私がしたくないソースコードを提供しなければならないと言われています!あなたはそれが何を意味するのかをlaymansの言葉で説明できますか? – Andy

+0

Andy - あなたのクライアントがサーバーアプリケーションと通信するためにThomasの提案をして、DBと直接話すだけの方がいいかもしれません。これはあなたの法的な心配を避けるだけでなく、実際にはより良いアーキテクチャーオプションであり、SQLインジェクションなどの方がより安全で、オープンにはならないからです。 – Brian

+0

返事をお寄せいただき、ありがとうございます。それはより多くの有益なように思えます! – Andy

5

MariaDB JDBCドライバを使用して、MySQLサーバと通信することができます。それはGPLではなくLGPLです。

+0

あなたの答えをありがとう、それは私の受け入れられた答えだったと思いますが、私が受け入れた解決策ははるかに良いと思います。とにかくありがとう – Andy

+0

ありがとう!MariaDBクライアント(JDBC)が私のために働いています。奇妙なことに、DatabseMetaData#getColumns( ""、 "、tableName、" ")はカラム名を返しませんが、通常のクエリと' SHOW COLUMNS'を使って簡単に再コード化できます。私の単純なアプリケーションのために、他のソースコードの変更は必要ありませんでした。 –

関連する問題