0

JDBC를 통해 FileMaker Pro 데이터베이스에 연결하도록 구성하려는 Elastic Beanstalk 응용 프로그램이 있습니다. 내가 사용하는 코드입니다 :이하려고하면AWS Elastic Beanstalk 작업을위한 클래스 패스에 JDBC jar 드라이버 추가

import jaydebeapi as jdp 

jdbc_driver_location = '/tmp/fmjdbc.jar' 

conn = jdb.connect(jdbc_driver_class, 
        jdbc_connection_type + '://' + db_url + '/' + db_name, 
        [user_name, password], jdbc_driver_location,) 

, 나는 다음과 같은 오류 얻을 :

java.sql.SQLException: No suitable driver found for jdbc:filemaker://10.120.120.108/carecord-<class 'jpype._jexception.java.sql.SQLExceptionPyRaisable'> 

시도하고 문제를 해결하기를, 나는 모두에하여 jdbc.jar를 추가했습니다 Ec2 인스턴스의/tmp 폴더뿐만 아니라 프로젝트 디렉토리에도 포함됩니다. 난 EC2 인스턴스에 SSH와 명령을 실행하는 경우 경우 :

JAVA_HOME=/tmp/fmjdbc.jar 

문제없이,이 메시지가있어 다음 번에 실행 프로그램. 몇 시간 후에 원래의 오류가 발생하고 작업을 다시 위 명령을 발급해야합니다.

commands: 
    command01: 
    command: sudo cp /opt/python/current/app/fmjdbc.jar /tmp/fmjdbc.jar 
    command02: 
    command: JAVA_HOME=/tmp/fmjdbc.jar 

그러나 프로젝트가 여전히 오류를 준다 : 나는 처음부터 서버에 위의 명령을 프로젝트 디렉토리에서 TMP 폴더로의 .jar를 복사 발행, /.ebextensions에 다음을 추가하는 시도이 문제를 해결하려면 . 작업을 일관되게 실행할 수 있도록이 드라이버를 클래스 경로에 어떻게 추가 할 수 있습니까?

+0

가변 내용 (사용자 및 비밀번호 없음)을 표시하면 도움이됩니다. 정말로'XXXXX- bastian

+0

XXX가 문제의 데이터베이스 URL을 숨길 수 있습니다. 프로덕션 환경에 표시되는 전체 오류 메시지가 이제 질문에 표시됩니다. – user2752159

+0

@bastian 위의 질문을 업데이트했습니다. 이 문제는이 스레드와 비슷합니다 : https://answers.launchpad.net/jaydebeapi/+question/248738, 수동으로 JAVA_HOME 명령을 입력하면 프로그램에있는 이 연결할 수 있지만 드라이버는 "sticking"하지 않습니다. 활동하지 않는 기간. 위와 연결된 티켓이 해결되지 않은 것 같습니다. – user2752159

답변

1

앞으로이 문제를 가지고 사람들을 돕기 위해, 내가 찾은 이것에 대한 대답은 this thread의 말이었다. 그냥 위의 내 원래 코드의

jdbc_driver_location = '/tmp/fmjdbc.jar' 

위의 섹션

if jpype.isJVMStarted() and not jpype.isThreadAttachedToJVM(): 
    jpype.attachThreadToJVM() 
    jpype.java.lang.Thread.currentThread().setContextClassLoader(jpype.java.lang.ClassLoader.getSystemClassLoader()) 

:

나는 다음을 추가. 이를 통해 응용 프로그램은 필요한 드라이버를 루프하고 성공적으로 찾을 수 있습니다.

0

JAVA_HOME은 서버에 Java가 설치된 위치를 가리 키기로되어 있습니다. 클래스 경로에 라이브러리를 추가하는 데 JAVA_HOME을 사용하지 마십시오. 코드가 작동하기 위해 환경 변수를 설정할 필요는 없습니다.

문제의 근원은 파일을 /tmp/fmjdbc.jar으로 복사하지만 jdbc_driver_location/tmp/jdbc.jar으로 설정하는 것입니다. 이러한 파일 이름이 다른 점에 유의하십시오. 이에 코드 변경을 해결하려면 :

jdbc_driver_location = '/tmp/fmjdbc.jar' 
+0

혼란에 빠지다! 문제를 썼을 때의 오타였습니다. 'jdbc_driver_location' 변수가'/ tmp/fmjdbc.jar '로 바르게 설정되어 있고 문제가 지속됩니다. – user2752159

+0

변수 문제가 오타 (typo) 였다면 어떤 문제가 발생했는지 알 수 있습니까?다시 말하지만,이 코드는 처음 시작될 때 실행되지만,'no suitable driver found '오류는 후속 시도에서 계속됩니다. – user2752159