将文件上传到 bluemix 应用程序并从配置文件指向它们
Uploading files to a bluemix app and pointing to them from configuration files
我正在尝试将文件上传到我的 bluemix 应用程序,但我在使用和理解文件系统时遇到问题。成功上传文件后,我想在我的配置文件中提供它们的路径。
具体来说,我想上传一个 jar
文件到服务器,稍后将其用作 java 代理。
我已经尝试从几个方向处理这个问题。
我看到我可以在 liberty_buildpack 中创建一个文件夹并将文件放入其中我可以稍后在编译发布阶段从 tmp 文件夹访问它:
/tmp/buildpacks/ibm-websphere-liberty-buildpack/lib/liberty_buildpack/my_folder
我还可以看到,在构建和部署应用程序时看到的文件系统中,我只能复制到位于以下位置的文件夹:
/app
所以我将 JAR 文件复制到应用程序文件并使用 2 种方法将其设置为 java代理:
- 使用 java 代理手动设置环境变量 JAVA_OPTS 以指向 /app/myjar.jar 使用
cf set-env
- 使用来自 wlp 服务器的
cf push
部署应用程序的 war 文件,并在 server.xml
文件和属性 genericJvmArguments
中设置 java 代理
这两种方法都不起作用,要么应用程序的部署阶段失败了,要么我的功能根本不起作用。
所以我尝试使用 cf files
搜索应用程序文件系统并找到 app
文件夹,但奇怪的是它没有与我部署的文件夹相同的文件,我不能'找不到与构建包的已部署文件夹的任何连接。
有人可以解释一下应该如何正确完成吗?即,上传文件然后我应该如何从环境 variable/server 文件中指向它?
我的意思是它应该是 /app/something 还是其他路径?
我还看到使用 @droplet.sandbox
之类的相对路径可能是解决这些文件的方法?以及我应该如何从 cf files
访问这些文件夹
谢谢。
编辑:
正如我在评论中所指示的那样,我已将 jar 文件添加到系统中,问题是当我将 javaagent 变量添加到环境变量 JAVA_OPTS 时,部署阶段失败并出现超时错误:
有效载荷:{... "reason"=>"CRASHED", "exit_status"=>32, "exit_description"=>"failed to accept connections within health check timeout", "crash_timestamp"=>
1433864527}
我分配java代理的方式如下:
cf set-env myApp JAVA_OPTS "path/agent.jar"
我试过添加几个位置:
1. 我发现如果我将 jar 文件添加到我的 WebContent 文件夹中,我可以在以下位置找到它:/app/wlp/usr/servers/defaultServer/apps/myapp.war/resources/
2.我在编译阶段把/tmp位置的jar文件复制到/home/vcap/app/agent.jar
3. 我已经在 /app/.java/jre/lib
中找到了 jar 文件
这 3 条路径中的 none 有效。
我发现如果我给出错误的路径,系统的行为是一样的,所以它可能是路径问题。
有什么想法吗?
不确定这是否是正确的答案,但我在我的 Liberty 应用程序中使用了额外的 jar 文件,所以这可能会有所帮助。
我将一个 myapp.war
文件推送到 bluemix。在 war 文件中,在 WEB-INF
文件夹中,我有一个 lib
文件夹,其中包含许多 jar 文件。这些 jar 文件中的 类 然后在我的应用程序的 java 代码中使用。
myapp.war/WEB-INF/lib/myPlugin.jar
您可以尝试使用所需的 jar 文件执行类似的操作,将它们构建到 war 文件中。
除此之外,您可以尝试使用 bluemix liberty documentation 中的 Overlaying the JRE
部分将 jars 添加到 JRE。
试试这个:
- 将代理 jar 放在 WAR 包内名为“.profile.d”的文件夹中;
- cf se your-app JAVA_OPTS -javaagent:/home/vcap/app/.profile.d/your.jar ;
- 将 war 推送到 Bluemix。
我正在尝试将文件上传到我的 bluemix 应用程序,但我在使用和理解文件系统时遇到问题。成功上传文件后,我想在我的配置文件中提供它们的路径。
具体来说,我想上传一个 jar
文件到服务器,稍后将其用作 java 代理。
我已经尝试从几个方向处理这个问题。 我看到我可以在 liberty_buildpack 中创建一个文件夹并将文件放入其中我可以稍后在编译发布阶段从 tmp 文件夹访问它:
/tmp/buildpacks/ibm-websphere-liberty-buildpack/lib/liberty_buildpack/my_folder
我还可以看到,在构建和部署应用程序时看到的文件系统中,我只能复制到位于以下位置的文件夹:
/app
所以我将 JAR 文件复制到应用程序文件并使用 2 种方法将其设置为 java代理:
- 使用 java 代理手动设置环境变量 JAVA_OPTS 以指向 /app/myjar.jar 使用
cf set-env
- 使用来自 wlp 服务器的
cf push
部署应用程序的 war 文件,并在server.xml
文件和属性genericJvmArguments
中设置 java 代理
这两种方法都不起作用,要么应用程序的部署阶段失败了,要么我的功能根本不起作用。
所以我尝试使用 cf files
搜索应用程序文件系统并找到 app
文件夹,但奇怪的是它没有与我部署的文件夹相同的文件,我不能'找不到与构建包的已部署文件夹的任何连接。
有人可以解释一下应该如何正确完成吗?即,上传文件然后我应该如何从环境 variable/server 文件中指向它?
我的意思是它应该是 /app/something 还是其他路径?
我还看到使用 @droplet.sandbox
之类的相对路径可能是解决这些文件的方法?以及我应该如何从 cf files
谢谢。
编辑: 正如我在评论中所指示的那样,我已将 jar 文件添加到系统中,问题是当我将 javaagent 变量添加到环境变量 JAVA_OPTS 时,部署阶段失败并出现超时错误: 有效载荷:{... "reason"=>"CRASHED", "exit_status"=>32, "exit_description"=>"failed to accept connections within health check timeout", "crash_timestamp"=> 1433864527}
我分配java代理的方式如下:
cf set-env myApp JAVA_OPTS "path/agent.jar"
我试过添加几个位置: 1. 我发现如果我将 jar 文件添加到我的 WebContent 文件夹中,我可以在以下位置找到它:/app/wlp/usr/servers/defaultServer/apps/myapp.war/resources/ 2.我在编译阶段把/tmp位置的jar文件复制到/home/vcap/app/agent.jar 3. 我已经在 /app/.java/jre/lib
中找到了 jar 文件 这 3 条路径中的none 有效。 我发现如果我给出错误的路径,系统的行为是一样的,所以它可能是路径问题。 有什么想法吗?
不确定这是否是正确的答案,但我在我的 Liberty 应用程序中使用了额外的 jar 文件,所以这可能会有所帮助。
我将一个 myapp.war
文件推送到 bluemix。在 war 文件中,在 WEB-INF
文件夹中,我有一个 lib
文件夹,其中包含许多 jar 文件。这些 jar 文件中的 类 然后在我的应用程序的 java 代码中使用。
myapp.war/WEB-INF/lib/myPlugin.jar
您可以尝试使用所需的 jar 文件执行类似的操作,将它们构建到 war 文件中。
除此之外,您可以尝试使用 bluemix liberty documentation 中的 Overlaying the JRE
部分将 jars 添加到 JRE。
试试这个:
- 将代理 jar 放在 WAR 包内名为“.profile.d”的文件夹中;
- cf se your-app JAVA_OPTS -javaagent:/home/vcap/app/.profile.d/your.jar ;
- 将 war 推送到 Bluemix。