将文件上传到bluemix应用程序并从配置文件

时间:2015-06-07 15:00:22

标签: cloudfoundry ibm-cloud

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

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

我试过从几个方向接近这个问题。 我看到我可以在liberty_buildpack中创建一个文件夹并将文件放在里面我以后可以在tmp文件夹的编译 - 发布阶段访问它:

/tmp/buildpacks/ibm-websphere-liberty-buildpack/lib/liberty_buildpack/my_folder

此外,我可以看到在构建和部署应用程序时看到的文件系统中,我只能复制到位于以下位置的文件夹:

/app

所以我将JAR文件复制到app文件并使用2方法将其设置为javaagent:

  1. 使用cf set-env
  2. 使用java代理手动设置环境变量JAVA_OPTS以指向/app/myjar.jar
  3. 使用来自wlp服务器的cf push部署应用的war文件,并在server.xml文件和属性genericJvmArguments
  4. 中设置java代理

    这两种方法都无法正常工作,应用程序的部署阶段失败或我的功能根本无效。

    所以我尝试使用cf files搜索应用程序文件系统并提出了app文件夹,但是它没有和我部署的文件夹相同的文件,我找不到与已部署文件夹或构建包的任何连接。

    有人可以解释一下这应该如何正确完成?即,上传文件,然后我应该如何从环境变量/服务器文件中指向它? 我的意思是应该是/ app / something还是其他路径? 我也看到使用像@droplet.sandbox这样的相对路径可能是解决这些文件的方法吗?以及如何从cf files

    访问这些文件夹

    感谢。

    编辑: 正如我在评论中指示的那样,我已经将jar文件添加到系统中,问题是当我将javaagent变量添加到环境变量JAVA_OPTS时,部署阶段会因超时错误而失败: payload:{...“reason”=>“CRASHED”,“exit_status”=> 32,“exit_description”=>“未能接受运行状况检查超时内的连接”,“crash_timestamp”=> 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.我已将jar文件放在/app/.java/jre/lib

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

2 个答案:

答案 0 :(得分:3)

试试这个:

  1. 将您的代理商jar放在名为" .profile.d"的文件夹中。在你的WAR包中;
  2. cf你的应用程序JAVA_OPTS -javaagent:/home/vcap/app/.profile.d/your.jar;
  3. 将战争推向Bluemix。

答案 1 :(得分:1)

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

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

myapp.war/WEB-INF/lib/myPlugin.jar

您可以尝试使用您需要的jar文件做类似的事情,将它们构建到war文件中。

除此之外,您可以尝试使用bluemix liberty documentation中的Overlaying the JRE部分将jars添加到JRE中。