Cloud foundry 将文件上载到bluemix应用程序并从配置文件指向它们

Cloud foundry 将文件上载到bluemix应用程序并从配置文件指向它们,cloud-foundry,ibm-cloud,Cloud Foundry,Ibm Cloud,我正在尝试将文件上载到我的bluemix应用程序,但我在使用和理解文件系统时遇到问题。成功上传文件后,我想在配置文件上给出它们的路径 具体来说,我想将一个jar文件上传到服务器,然后将其用作javaagent 我试过从几个方向接近这个isuue。 我发现我可以在liberty_buildpack中创建一个文件夹,并将文件放在其中,我可以稍后在编译发布阶段从tmp文件夹访问它: /tmp/buildpacks/ibm-websphere-liberty-buildpack/lib/liberty_

我正在尝试将文件上载到我的bluemix应用程序,但我在使用和理解文件系统时遇到问题。成功上传文件后,我想在配置文件上给出它们的路径

具体来说,我想将一个
jar
文件上传到服务器,然后将其用作javaagent

我试过从几个方向接近这个isuue。 我发现我可以在liberty_buildpack中创建一个文件夹,并将文件放在其中,我可以稍后在编译发布阶段从tmp文件夹访问它:

/tmp/buildpacks/ibm-websphere-liberty-buildpack/lib/liberty_buildpack/my_folder
我还可以看到,在构建和部署应用程序时看到的文件系统中,我只能复制到位于以下位置的文件夹:

/app
因此,我将JAR文件复制到应用程序文件中,并使用2方法将其设置为javaagent:

  • 使用JAVA代理手动设置环境变量JAVA_OPTS,使用
    cf set env
  • 使用wlp server中的
    cf push
    部署应用程序的war文件,并在
    server.xml
    文件和属性
    genericJVM参数
  • 这两种方法都不起作用,要么应用程序的部署阶段失败,要么我的功能根本不起作用

    因此,我尝试使用
    cf files
    搜索应用程序文件系统,并找到了
    app
    文件夹,但它没有与我部署的文件夹相同的文件,并且我找不到与构建包中部署的文件夹的任何连接

    有人能解释一下应该如何正确地做到这一点吗?也就是说,上传文件,然后如何从环境变量/server文件指向它? 我的意思是它应该是/应用程序/什么或者其他路径? 我也看到过使用相对路径,比如
    @droplet.sandbox
    也许这就是解决这些文件的方法?我应该如何从
    cf文件

    谢谢

    编辑: 正如我在向系统添加jar文件的注释中所述,问题在于,当我将javaagent变量添加到环境变量JAVA_OPTS时,部署阶段会失败,并出现超时错误: 有效负载:{…“原因”=>“崩溃”,“退出状态”=>32,“退出描述”=>“在健康检查超时内接受连接失败”,“崩溃时间戳”=> 1433864527}

    我分配javaagent的方式如下:

    cf set-env myApp JAVA_OPTS "path/agent.jar"
    
    我尝试添加了几个位置: 1.我发现,如果我将jar文件添加到我的WebContent文件夹中,我可以在:/app/wlp/usr/servers/defaultServer/apps/myapp.war/resources中找到它/ 2.我已经将jar文件从编译阶段的/tmp位置复制到/home/vcap/app/agent.jar 3.我在/app/.java/jre/lib中找到了jar文件

    这三条路都不管用。 我发现,如果我给出了一个错误的路径,系统的行为是相同的,所以这可能是一个路径问题。
    有什么想法吗?

    不确定这是否是正确的答案,但我在Liberty应用程序中使用了额外的jar文件,所以这可能会有所帮助

    我将一个
    myapp.war
    文件推送到bluemix。在war文件的
    WEB-INF
    文件夹中,我有一个
    lib
    文件夹,其中包含许多jar文件。然后在我的应用程序的java代码中使用这些jar文件中的类

    myapp.war/WEB-INF/lib/myPlugin.jar
    
    您可以尝试使用所需的jar文件执行类似的操作,将它们构建到war文件中


    除此之外,您可以尝试从bluemix中覆盖JRE的
    部分,将jar添加到JRE中。

    不确定这是否是正确的答案,但我正在Liberty应用程序中使用其他jar文件,因此这可能会有所帮助

    我将一个
    myapp.war
    文件推送到bluemix。在war文件的
    WEB-INF
    文件夹中,我有一个
    lib
    文件夹,其中包含许多jar文件。然后在我的应用程序的java代码中使用这些jar文件中的类

    myapp.war/WEB-INF/lib/myPlugin.jar
    
    您可以尝试使用所需的jar文件执行类似的操作,将它们构建到war文件中

    除此之外,您可以尝试从bluemix中覆盖JRE的
    部分,将JAR添加到JRE中。

    尝试以下方法:

  • 将您的代理JAR放在WAR包中名为“.profile.d”的文件夹中
  • cf se your app JAVA_OPTS-javaagent:/home/vcap/app/.profile.d/your.jar
  • 把战争推到Bluemix
  • 试试这个:

  • 将您的代理JAR放在WAR包中名为“.profile.d”的文件夹中
  • cf se your app JAVA_OPTS-javaagent:/home/vcap/app/.profile.d/your.jar
  • 把战争推到Bluemix

  • 您好,谢谢您的回答,我做到了,我有一个奇怪的问题,当我使用cf files显示文件树时,我没有得到/home作为根目录中的结果之一。我得到以下结果:.bash_logout 220B.bashrc 3.0K.profile 675B app/-logs/-run.pid 3B staging_info.yml299B tmp/-是,您不能在“/home/vcap”文件夹外浏览。“cf文件”以“/home/vcap”作为根文件夹开头。非常感谢您的帮助!我在问题的编辑部分写下了我的问题,你能参考一下吗?嗨,谢谢你的回答,我做了,我有一个奇怪的问题,当我使用cf文件显示文件树时,我不获取/home作为根目录中的结果之一。我得到以下结果:.bash_logout 220B.bashrc 3.0K.profile 675B app/-logs/-run.pid 3B staging_info.yml