在bluemix上添加我自己的jar文件作为javaagent

时间:2015-05-20 12:36:52

标签: ibm-cloud

我想在bluemix上创建一个自定义buildpack,作为其中的一部分我试图将我自己的jar文件添加为javaagent。我曾经使用Tomcat,我刚刚将额外的代理添加到catalina.sh脚本。

在bluemix上,这些是我采取的步骤:

  1. 我创建了新项目并上传了我的代码。
  2. 我将默认的java buildpack克隆到我自己的git存储库。
  3. 在存储库中,我在/ lib / java_buildpack文件夹中添加了.jar文件。
  4. 现在是我遇到麻烦的一步,我找到了:

    java_opts.add_javaagent(@droplet.sandbox + 'javaagent.jar')
    

    根据评论的功能调用应该是我正在寻找的。

  5. 问题是,当我检查函数时,我看到它调用了以下函数:

    qualify_path(path, root = @droplet_root)
    "$PWD/#{path.relative_path_from(root)}"
    

    我无法弄清楚@droplet_root的位置在哪里,如果我能找到它,我可以在那里上传我的jar文件。

    我尝试添加这样的相对位置:

    java_opts << "java_buildpack/myAgent.jar"
    

    但它没有用。

    有关如何实现的任何建议?我应该在哪里放置文件,还是有其他方式?

1 个答案:

答案 0 :(得分:3)

分割buildpack是实现这一目标的一种方法。您可以将其实现为&#34;框架&#34;在Java buildpack中。以下是您可以参考的一些示例,其中还添加了代理jar:

https://github.com/cloudfoundry/java-buildpack/blob/master/lib/java_buildpack/framework/new_relic_agent.rb

https://github.com/cloudfoundry/java-buildpack/blob/master/lib/java_buildpack/framework/jrebel_agent.rb

另一种简单的方法是简单地将代理jar添加到应用程序包中,然后使用JAVA_OPTS环境变量添加Java选项以启用代理。这需要您找到代理程序jar在正在运行的应用程序容器中结束的路径。您可以使用&#34; cf files&#34;浏览到它。这将依赖于Droplet的内部结构,因此如果buildpack改变了Droplet结构,它可能会被破坏。