【问题标题】:IBM Bluemix, JavaBuildpack, Deployment issueIBM Bluemix、JavaBuildpack、部署问题
【发布时间】:2015-09-08 23:09:29
【问题描述】:

我开发了一个在 Tomcat 上运行的应用程序,并尝试使用 java_buildpack 在 IBM Bluemix 上推送该应用程序,但该应用程序没有启动。

我在日志中看到的原因是:“java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver”

DB2 的 JDBC 驱动程序需要在 Tomcat 的 lib 文件夹中。

由于这是我第一次在 Bluemix 上使用 JAVABUILDPack 进行部署,我真的不知道如何将 DB2 Jar 推送到 Bluemix 上的 Tomcat/lib 文件夹。

请帮忙。

以下是日志:-

Catalina.core.ContainerBase.[Catalina].[localhost].[/] SEVERE  Exce
ption opening database connection
2015-09-06T18:43:41.99+0200 [App/0]      OUT java.sql.SQLException: com.ibm.db2.jcc.DB2Driver
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:644)
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at org.apache.catalina.realm.JDBCRealm.startInternal(JDBCRealm.java:717)

2015-09-06T18:43:41.99+0200 [App/0]      OUT    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:617)
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at java.lang.Thread.run(Thread.java:745)
2015-09-06T18:43:41.99+0200 [App/0]      OUT Caused by: java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2015-09-06T18:43:41.99+0200 [App/0]      OUT    at java.lang.Class.forName0(Native Method)

【问题讨论】:

    标签: tomcat cloud-foundry ibm-cloud


    【解决方案1】:

    您的应用程序是否必须针对 java buildpack 运行?您能否尝试针对 Bluemix 中的默认构建包(即 WebSphere Liberty Buildpack)运行。

    cf push <appname>
    

    【讨论】:

    • 我无法使用 Websphere Liberty Buildpack,因为我的应用程序使用 Tomcat 领域。我最初也尝试过,但我的应用程序的一半功能无法正常工作。
    • 您可以 fork java buildpack,然后将 DB2 jar 放在 github.com/cloudfoundry/java-buildpack/tree/master/resources/…
    • 按照你说的方式,JDBC错误现在已经解决了......非常感谢你的帮助。
    • 没问题,很高兴它成功了。接受答案,这样这个答案就会开始冒泡。
    【解决方案2】:

    您可以将DB2 driver JAR 添加到您的Web 应用程序的WEB-INF/lib 目录中。这将在部署期间由 Tomcat 自动加载。

    /WEB-INF/lib/ - 此目录包含 JAR 文件,其中包含应用程序所需的 Java 类文件(和相关资源),例如第三方类库或 JDBC 驱动程序。

    https://tomcat.apache.org/tomcat-7.0-doc/appdev/deployment.html#Shared_Library_Files

    【讨论】:

    • 是的,DB2 Jar 文件已经存在于 WEB-INF/lib 中。当我在本地服务器上运行相同的应用程序时,我必须在运行配置中添加 JAR,否则应用程序会抛出相同的错误。
    • 因为这个项目是给我的大学的,我不能公开分享代码,请你通过Skype帮助我。我会在那里分享我的teamviewer,你可以帮助我。我的 Skype id 是 :- suneetaks 我在 Skype 上在线
    • 我会尝试找到一个你可以尝试的示例项目
    • 在本地主机上,如果我在运行配置中添加 JDBC jar,那么它工作正常。如果我从运行配置中删除它们,那么它会抛出错误。 jar 总是在 WEB-INF/lib 中。当我将项目导出为 war 时,本地 tomcat 运行配置不会应用于 bluemix。请帮忙。
    • 请检查您推送到 Bluemix 的 WAR 文件是否包含 WAR 文件的 WEB-INF/lib 目录中的 JDBC Driver jar 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2016-07-09
    相关资源
    最近更新 更多