2011-07-27 6 views
1

일부 정보를 수집하기 위해 온라인 데이터베이스에 연결해야하는 Java 소프트웨어를 작성 중입니다! 우리 회사에서이 소프트웨어를 판매하고 싶지만 문제는 오라클이 GPL에 따라 JDBC 드라이버를 라이센스 한 것입니다. 올바른 것인데, 다른 제한 사항과는 달리 드라이버를 재배포 할 수 없음을 의미합니다!GPL을 거치지 않고 Java로 MySQL에 연결

내가 볼 수있는 유일한 대안은 PostgreSQL을 사용하는 것입니다. 드라이버가 BSD에서 라이센스를 받았다는 것입니다. 즉, 기본적으로 사용자가 원하는 모든 것을 할 수 있다는 것을 의미합니다. 그러나 나는 웹 호스트 인 JustHost과 대화를 나눴으며 기본적으로 PostgreSQL을 지원하지 않으며 계획이 없기 때문에 PostgreSQL 데이터베이스를 호스트하고 싶다면 전용 서버에 비용을 지불해야 할 것입니다. 추가 할 수 있습니다. 그들은 매우 정직했지만 PostgreSQL을 지원하는 다른 웹 호스팅 회사로 이전하는 것이 더 저렴할 것이라고 말했습니다.

마지막 수단으로 간단한 텍스트 파일을 사용하여 정보를 전송할 수 있습니다. 하지만 여기서 유일한 걱정은 보안입니다. 데이터베이스에 저장된 정보 중 일부는 기밀 정보입니다. 실제로는 기밀 정보 인 데이터가 라이센스 키가되며 전자 메일 일 수도 있습니다. 이는 처음 사용시 사용자 라이센스 키의 유효성을 확인할 때 분명합니다. 어쩌면 그렇게 불안정하지는 않을 것입니다. 사람들이 필요에 맞게 파일을 편집하는 것이 매우 쉽다고 생각했을 수도 있습니다.

저는 텍스트 파일에서 요청한 정보를 제공하는 일종의 PHP 스크립트가 자바가 더 안전 할 수도 있지만 다시 보안 전문가가 아니므로 특히 공유 호스트를 사용하는 것처럼 보이고 '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의 내장 암호화 라이브러리를 사용하여 데이터를 암호화하고 암호화 된 날짜를 전송하고 클라이언트에서 해독 할 수 있습니다. 또한 데이터가 변경되지 않았는지 확인하기 위해 일부 해시 (예 : MD5)를 전송할 수 있습니다.

+0

제안 해 주셔서 감사합니다. 지금까지 GPL 라이센스를 충분히 알지 못해서 지금까지 가장 현명한 것 같습니다. 비록 내가 여기에있는 회원들 중 누구도이 같은 변호사/변호사없이 손을 잡을 너무 위험한 것은 의심하지 않습니다! 그래도 당신의 제안을 자세히 설명해주십시오! 나는 당신이 무엇을 얻고 있는지, PHP 스크립트 아이디어와 비슷하지만 Java로 작성된 것을 이해하고 있다고 생각합니다. 그러나 이전에 그런 적이 없었기 때문에 좀 더 자세한 정보를 원합니다! 공유 호스트에서이 작업을 수행 할 수 있습니까?그리고 그것은 'HTTPS'가 없으면 충분히 안전 할 것입니다. – Andy

+0

가능한 경우 HTTPS로 가십시오. 덜 해킹 당할 때까지는 보안이 충분하지 않습니다. 너무 늦었습니다 :-) – Brian

+0

@Andy 우리 자신의 서버를 가지고 있기 때문에 공유 호스트에서 작동하는지 여부는 말할 수 없습니다. 호스트는 Java와 어쩌면 어떤 종류의 응용 프로그램 서버를 지원합니다 (몇 가지 사항이 더 쉬울 것입니다). - 나는 답변을 통해 몇 가지 힌트를 추가했습니다. 암호화와 관련해서 : 알고리즘이 언어에 의존해서는 안되기 때문에 PHP에서도 그렇게 할 수 있습니다. – Thomas

3

소프트웨어를 판매 할 수 있으며 데이터베이스/드라이버를 설치 요구 사항으로 나열하면됩니다.

문서 및 작업 완료시 포함 시키십시오.

GPL은 독점 소프트웨어가 대화 할 수 없다는 의미가 아닙니다. 전제 조건이며 소프트웨어의 일부는 아닙니다.

은 또한 당신도 당신이 라이브러리를 설치하는 서비스를 제공하기 위해 고객을 충전 할 수 있습니다

MySQL licensing and GPL


업데이트 :

또한이 비슷한 질문을 참조하십시오. 이렇게하면 고객이 직접 설치하지 않고도 청구서의 일부를 구성 할 수 있습니다.

+0

@Mikavei 사용자가 직접 드라이버를 설치해야하는 것은 아닙니다. 나는 설치 요구 사항을 정말로 원하지 않았습니다. 필자는 MySQL이 누군가에게 드라이버를 다운로드하기위한 링크를 제공한다고해도 재배포로 간주되어 허용되지 않는다고 말한 것을 제외하고는! 답장을 보내 주셔서 감사합니다.하지만 백업 계획이 될 것입니다. – Andy

+0

GPL을 읽으십시오. 서버/개인 라이브러리 용 getout 절이 있습니다. @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 - 고객이 서버 응용 프로그램과 통신 할 수 있도록 토마스의 제안과 함께 최선을 다룰 수 있으며, 해당 내용 만 DB와 직접 대화 할 수 있습니다. 이것은 당신의 법적 걱정을 피할뿐만 아니라 실제로 더 나은 아키텍처 옵션이기 때문에 SQL 인젝션 등을 덜 안전하게 할 수 있습니다. – Brian

+0

답장을 보내 주셔서 감사 드리며, 저는 Thomas의 제안을 더 깊이 생각할 것입니다. 그것은 라운드보다 더 유익한 것처럼 보입니다! – Andy

5

MariaDB JDBC 드라이버를 사용하여 MySQL 서버와 통신 할 수 있습니다. 그것은 GPL 대신 LGPL입니다.

+0

답변 해 주셔서 감사합니다. 내 생각에 받아 들여진 대답 이었지만 받아 들였던 해결책이 훨씬 낫다고 생각합니다. 어쨌든 고마워요 – Andy

+0

고마워요!MariaDB 클라이언트 (JDBC)가 나를 위해 일하고있다. 이상하게도,'DatabseMetaData # getColumns ("", "", tableName, "")은 컬럼 이름을 반환하지 않지만, 일반적인 쿼리와'SHOW COLUMNS'를 사용하여 쉽게 다시 코딩됩니다. 단순한 응용 프로그램에는 다른 소스 코드 변경이 필요하지 않았습니다. –

관련 문제