我正在尝试将文件上传到我的bluemix应用程序,但我在使用和理解文件系统时遇到了问题。在我成功上传文件后,我想在我的配置文件中给出它们的路径。
具体来说,我想将jar
文件上传到服务器,然后将其用作javaagent。
我试过从几个方向接近这个问题。 我看到我可以在liberty_buildpack中创建一个文件夹并将文件放在里面我以后可以在tmp文件夹的编译 - 发布阶段访问它:
/tmp/buildpacks/ibm-websphere-liberty-buildpack/lib/liberty_buildpack/my_folder
此外,我可以看到在构建和部署应用程序时看到的文件系统中,我只能复制到位于以下位置的文件夹:
/app
所以我将JAR文件复制到app文件并使用2方法将其设置为javaagent:
cf set-env
cf push
部署应用的war文件,并在server.xml
文件和属性genericJvmArguments
这两种方法都无法正常工作,应用程序的部署阶段失败或我的功能根本无效。
所以我尝试使用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
中这三条路径都没有奏效。 我发现,如果我给出一个错误的路径,系统行为相同,所以它可能是一个路径问题。 有什么想法吗?
答案 0 :(得分:3)
试试这个:
答案 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中。