Amazon web services 将JDBC jar驱动程序添加到AWS Elastic Beanstalk作业的类路径

Amazon web services 将JDBC jar驱动程序添加到AWS Elastic Beanstalk作业的类路径,amazon-web-services,jdbc,amazon-ec2,amazon-elastic-beanstalk,jaydebeapi,Amazon Web Services,Jdbc,Amazon Ec2,Amazon Elastic Beanstalk,Jaydebeapi,我有一个弹性Beanstalk应用程序,我正试图通过JDBC将其配置为连接到FileMaker Pro数据库。我使用的代码是: import jaydebeapi as jdp jdbc_driver_location = '/tmp/fmjdbc.jar' conn = jdb.connect(jdbc_driver_class, jdbc_connection_type + '://' + db_url + '/' + db_name,

我有一个弹性Beanstalk应用程序,我正试图通过JDBC将其配置为连接到FileMaker Pro数据库。我使用的代码是:

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'>
程序将在下一次提示时运行,不会出现问题。几个小时后,它将给出原始错误,需要再次发出上述命令才能工作。为了解决这个问题,我尝试将以下内容添加到/.ebextensions,将.jar从项目目录复制到tmp文件夹中,并从一开始就向服务器发出上述命令:

commands:
  command01:
    command: sudo cp /opt/python/current/app/fmjdbc.jar /tmp/fmjdbc.jar
  command02:
    command: JAVA_HOME=/tmp/fmjdbc.jar
但该项目仍然存在错误。关于如何将此驱动程序添加到类路径以使作业一致运行,您有什么想法吗?

JAVA\u HOME应该指向服务器上安装JAVA的位置。您没有使用JAVA_HOME将库添加到类路径。您不必为代码设置任何环境变量

问题的根源是您正在将文件复制到/tmp/fmjdbc.jar,但您正在将jdbc_driver_location设置为/tmp/jdbc.jar。请注意这些文件名是如何不同的。要修复代码,请将其更改为:

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())
就在门的上方

jdbc_driver_location = '/tmp/fmjdbc.jar'

上面是我的原始代码的一部分。这允许应用程序循环并成功找到所需的驱动程序。

很抱歉造成混淆!那只是我在写问题时的一个打字错误。变量jdbc_driver_location被正确设置为“/tmp/fmjdbc.jar”,问题仍然存在。鉴于变量问题是一个打字错误,您知道是什么导致了问题吗?同样,代码将在第一次启动时运行,但在后续尝试中仍然会出现“未找到合适的驱动程序”错误。如果您可以在不使用用户和密码的情况下向我们显示变量内容,这将有所帮助。你真的得到了一个XXXXX-XXX在那里隐藏了有问题的数据库的URL。完整的错误信息现在显示在问题中,正如它出现在生产中一样。@bastian我已经更新了上面的问题。这个问题似乎类似于这个线程:,在程序中,当我手动输入JAVA_HOME命令时可以连接,但是驱动程序在一段时间的不活动后没有卡住。不幸的是,上面链接的问题似乎没有得到解决。
jdbc_driver_location = '/tmp/fmjdbc.jar'